【问题标题】:In need of a Smarter Environmental Package Configuration需要更智能的环境包配置
【发布时间】:2011-03-01 18:40:10
【问题描述】:

我正在尝试在 SSIS 中设置 包模板,遵循 Wrox Programmer to Programmer 一书,SQL Server 2008 Integration Services:问题 - 设计 - 解决方案。我真的很喜欢这本书,尽管它是 2008 年的,而且我们使用的是 SQL Server 2005。我有一个工作包模板,它使用 间接 XML 包配置来识别什么环境(本地开发人员, dev, QA, production 等) 包正在运行。它为环境定位 SQL Server 包配置

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

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

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

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

感谢您的宝贵时间。

【问题讨论】:

  • 我从未尝试从注册表中读取配置路径,在我们的项目中我们使用了环境变量,但我相信您从 hklm 读取可能存在问题。快速谷歌搜索也证实这是一个限制。 powershell 的想法听起来很酷,我不会担心存储两次,因为你并没有真正用这种方法存储两次,你只是通过一个不寻常的地方传递它,仅此而已。我会选择 powershell 解决方案。

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


【解决方案1】:

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

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

$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");

【讨论】:

    猜你喜欢
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 2016-10-30
    • 1970-01-01
    相关资源
    最近更新 更多