sql-server-2005 - 需要更智能的环境包配置

标签 sql-server-2005 powershell ssis environment-variables registry

我正在尝试设置 包模板在 SSIS 中,遵循 Wrox Programmer to Programmer 一书, SQL Server 2008 集成服务:问题 - 设计 - 解决方案 .我真的很喜欢这本书,尽管它是 2008 年的并且我们使用的是 SQL Server 2005。我有一个使用 的工作包模板。间接 XML 包配置 确定运行包的环境(本地开发人员、开发人员、QA、生产等)。这将定位 SQL Server 包配置为环境。

这个设置很棒,除了最前面的环境变量。如果包可以使用与我们所有其他应用程序和工具使用的环境资源定位器相同的环境资源定位器,我的团队会更喜欢它,因此我们不会使用两个具有基本相同信息的环境标记。通常我们在 中查找注册表项HKey_Local_Machine 但是注册表包配置类型只允许您查找 HKey_Current_User 注册表。

我的第一个想法是编写一个扩展 Registry 类型的新 Package Configuration Type 类;毕竟我们在编写自己的自定义日志提供程序时非常幸运。 SSIS 是 super 可扩展的,对吧?所以似乎没有办法编写自己的包配置类型。

还有什么办法可以从 HKLM 注册表项连接字符串 配置我的 SSIS SQL Server 包配置?

如果这不可能,还有哪些其他解决方法可用?我的想法是写一个电源 脚本将通过从注册表中获取连接字符串来创建/修改包将使用的环境变量。这种方式仍然有两个标记,但至少它是自动维护和自动化的。这种变通方法是否必要?

感谢您的时间。

最佳答案

所以我继续使用 PowerShell 路线,因为没有提供替代方案。

这是脚本的缩写版本,我无法显示查找 connectionString 变量的代码,因为它在那里有一些私有(private)细节,但如果您使用它作为引用,那么这些行无论如何对于您的环境都是唯一的。

$ErrorActionPreference = "Stop";

# Open a connection to verify that the connection string works.
"Verifying connection string: $connectionString";
$oleDbConnection = New-Object System.Data.OleDb.OleDbConnection $connectionString;
$oleDbConnection.Open();
$oleDbConnection.Dispose();

# Set the environment variable
"Writing to System Environment Variable 'SSIS_CONFIG' replacing old value: $($env:SSIS_CONFIG)";
[Environment]::SetEnvironmentVariable("SSIS_CONFIG", $connectionString, "Machine");

关于sql-server-2005 - 需要更智能的环境包配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3007922/

相关文章:

sql-server-2005 - 改变sql中的列数据类型

sql - 在 SQL Server 中连接列值

powershell - 在 PowerShell 中反转字节顺序

ssis - 让 SSIS 检测 csv 文件的列大小

sql-server - 如何将驱动器映射到 SQL 实例?

sql-server - 是否可以在链接服务器上创建表?

powershell - 如何获取目标用户(不同)域的 FQDN?

python - 如何在 Windows 上执行 .sh 文件? (学习Python)

parsing - 解析描述字符串以填充 NULL 字段

sql - 无法将 SSIS 项目部署到 SQL Server