【问题标题】:how to change the server name in the connection manager through variables如何通过变量更改连接管理器中的服务器名称
【发布时间】:2018-08-16 13:26:14
【问题描述】:
我有一个要求,我必须通过变量在连接管理器中动态更改服务器名称。我将通过存储过程中的变量传递服务器名称。这样做的原因是因为 Package 最初将在 Dev 环境中创建,但稍后将部署在 UAT 上,然后部署在 Live 上。作为开发人员,我无法访问 UAT 和 Live。将要部署包的人将不了解 ssis。我
有人知道怎么做吗?
【问题讨论】:
标签:
visual-studio-2015
ssis
ssis-2012
sql-server-data-tools
【解决方案1】:
您可以转到您的连接管理器,然后在“属性”中单击“表达式”中的省略号。选择ServerName 属性并为其分配必要的变量或参数。只要您确认元数据将在运行时正确对齐,在任何数据流任务上将 DelayValidation 设置为 true 并将源/目标组件上的 ValidateExternalMetadata 设置为 false 也可能会有所帮助。
【解决方案2】:
这通常通过某种类型的配置来完成。
在 ssis 2012 之前,这仅通过配置文件完成,但从 2012 年开始,参数也是一种选择。
配置文件:
在 DEV 中设置您的初始配置文件,并在连接管理器中设置连接字符串的属性以由配置文件配置。在您的环境中推广您的软件包时,您需要更改配置文件。
在提供促销说明时,让代理应用您建立的配置文件。
参数:
非常相似,但更直接来自代理。需要在“包或项目”上设置参数,然后使用表达式引用正在配置的属性上的参数(在您的情况下是到 DB 的连接字符串)。建立作业时可以直接在Agent中设置参数。
附注:
您通常还需要在通过环境进行升级时通过 config 定义文件路径。
【解决方案3】:
您查看过软件包配置吗?使用执行 SQL 任务将值提取到变量中,然后在连接管理器上,右键单击并选择属性。在下拉列表中选择 ServerName 属性并在此处使用您的变量将其动态设置为配置表/文件中的内容。不要忘记将连接设置为 DelayValidation = True 以克服运行时编译错误。