【问题标题】:Use dynamic variable in SSIS to connect to SQL Server在 SSIS 中使用动态变量连接到 SQL Server
【发布时间】:2020-01-23 13:47:35
【问题描述】:

我有一个 SSIS 包,它有一个连接到 SQL Server 数据库的 OLEDB/ADO.NET 连接管理器。

我需要从位于 SSIS 机器上固定位置的文件中获取此连接管理器的连接字符串的值。

我创建了一个名为CrmSqlConnectionString 的变量,它的初始化值为“example”。

在包中运行的第一件事是一个脚本任务,它加载文件并将变量更新为正确的连接字符串。

当我尝试在 Visual Studio 中运行它时,出现以下异常:

数据流任务 [ADO NET 源 [16]] 出错:ADO NET 源未能获取连接 {GUID},并显示以下错误消息:
“无法打开登录请求的数据库“示例”。登录失败。用户“MAIN\name”登录失败。”。

数据流任务 [SSIS.Pipeline] 出错:ADO NET 源验证失败并返回错误代码 0xC0208449。数据流任务 [SSIS.Pipeline] 出错:一个或多个组件验证失败。数据流任务出错:任务验证期间出现错误。 (Microsoft.DataTransformationServices.VsIntegration)

我尝试将连接管理器上的 DelayValidation 属性设置为 true,但仍然出现此错误。

有没有人可以解决这种情况?

谢谢

【问题讨论】:

  • 你能告诉我们你正在使用的连接字符串吗?您是否已验证文件中的字符串是否正确分配给变量?您如何配置连接管理器?

标签: sql-server ssis


【解决方案1】:

DelayValidation 属性应在数据流任务上设置为 True。不在连接管理器上。这正是为此目的。

Prototype 在我的 PC 上运行。下图显示了它是如何设置的。

【讨论】:

  • @EmmaV 您使用的动态变量应该包含连接字符串的属性,例如 (InitialCatalog) 而不是整个连接字符串。在 OLEDB 连接管理器属性上,单击表达式行右侧的 ... 图标并添加特定属性。例如,在我用来制作原型的 SSIS 上,我添加了一个包含表达式 @[User::CmSqlConnectionString] 的属性 InitialCatalog。
【解决方案2】:

我使用错误的连接数据创建了连接管理器,并使用包配置在我的计算机中创建了一个 XML 文件。 包配置帮助我配置连接字符串而不会引发错误。 如果您需要为两个或更多环境设置连接字符串,建议使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多