执行SSIS包
我刚刚开始学习SSIS软件包,所以若我的问题的答案对你们来说是显而易见的,那个么请记住:-) 我有一个SSIS包,需要安装在不同的环境中,如DEV/SYSTEST/DTE/LIVE。请注意,SQL Server连接字符串在每个环境中都是不同的,因此需要不同的配置文件 我认为部署它的方式是执行SSIS包,ssis,Ssis,我刚刚开始学习SSIS软件包,所以若我的问题的答案对你们来说是显而易见的,那个么请记住:-) 我有一个SSIS包,需要安装在不同的环境中,如DEV/SYSTEST/DTE/LIVE。请注意,SQL Server连接字符串在每个环境中都是不同的,因此需要不同的配置文件 我认为部署它的方式是 为不同的环境创建单独的包配置文件 创建一个环境变量,比如“MyPackageConfigPath”,以保存 配置文件的路径 使用DtExec命令和/ConfigFile开关运行包 我的问题是: 这是以不同
- 为不同的环境创建单独的包配置文件
- 创建一个环境变量,比如“MyPackageConfigPath”,以保存 配置文件的路径
- 使用DtExec命令和/ConfigFile开关运行包
- 这是以不同的方式部署SSIS包的好方法吗 环境
- 在这个场景中,还有其他更好的执行包的方法吗
谢谢大家! 最好的答案是适合你的情况的答案。不是很有帮助,但你已经做到了。我不明白为什么你的解决方案不起作用
有些地方对在生产机器上添加环境变量有点挑剔。如果你能做到这一点,没有问题。如果没有,您能否将配置文件放在每台机器上的同一位置,并对位置进行硬编码?另外,部署时不必担心这一点。我不喜欢摆弄环境变量,我发现在包配置中使用“SQL Server”配置元素更容易。它在您选择的数据库中创建预定义结构的配置表。该数据库甚至可能是服务器“localhost”上的“config123”。我就是这么做的。然后,我将配置数据库保存在本地开发机器和服务器上,但配置条目的值不同。 这意味着在我开发时,包使用我的本地配置设置,在服务器运行时,包自动使用生产服务器配置。:-)
我们还将包保存在msdb中(DeploymentManifests由Visual Studio创建,没有什么大不了的),并让SQL Server代理定期运行这些包。这使得部署更改变得非常容易。只要将更新后的包部署到msdb中,就可以了。假设2005-2008 R2或2012具有包部署模型,您的配置选项如下
CREATE TABLE dbo.SSISConfig
(
id identity(1,1) NOT NULL PRIMARY KEY
, ConfigurationFilter nvarchar(150) NOT NULL -- Package Name
, ConfiguredValue nvarchar(255) NULL -- Value of setting, such as a connection string
, PackagePath nvarchar(255) NOT NULL -- Target within SSIS package where value is written
, ConfiguredValueType nvarchar(20) NOT NULL -- Data type such as String, Int32, or DateTime
)
DEV服务器上的示例如下所示
id | ConfigurationFilter| ConfiguredValue | PackagePath | ConfiguredValueType
100 | Default.2005.Sales | Data Source=DEV;Initial Catalog=SALESDEVDB;Provider=SQLNCLI.1;Integrated Security=SSPI; | \Package.Connections[SLSDB].Properties[ConnectionString] | String
生产中的同一行看起来像
id | ConfigurationFilter| ConfiguredValue | PackagePath | ConfiguredValueType
123 | Default.2005.Sales | Data Source=PROD;Initial Catalog=SALESPRODB;Provider=SQLNCLI.1;Integrated Security=SSPI; | \Package.Connections[SLSDB].Properties[ConnectionString] | String
我们有配置部署脚本,这些脚本将服务器部署到处理数据库和服务器名称更改的服务器中,因此只有一个脚本需要维护。我发现在这种情况下,XML文件很难保持同步(糟糕,我们忘了更新产品的配置文件,而且输入了错误的数据)
诀窍
正如您在第二个要点中所指出的,实现这一点的诀窍在于,您需要某种机制来告诉SSI使用不同的配置集。如果您没有多实例机器,那么我发现使用环境变量是一种很好的方法。每个执行包的服务器定义一次,就完成了。如果您在多实例环境中工作,则情况会变得更加棘手
我认为HLGEM有一个相当聪明的方法,在多实例环境中使用不同的服务帐户和本地环境变量。您可以向下滚动查看我在多实例机器上的方法
我介绍配置的各种答案