0

我正在使用 SSIS 包将数据从 excel 表导入 SQL DB。在配置文件中,我使用了以下变量。

 Name                 scope     DataType   Value
----------------------------------------------------
 DBName               package   String     DB_Master
 Password             package   String     xx
 UserName             package   String     sa
 ServerName           package   String     xxx.xxx.x.xx
 SqlConnectionString  package   String     DataSource=xxx.xxx.x.xxx;UserID=sa;Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;Initial Catalog=DB_Master;Password=xx

右键单击 OLEDB ConnectionManager,然后单击属性窗口下方的值分配

ConnectionString - Initial Catalog=DB_Master;DataSource=xxx.xxx.x.xxx;UserID=sa;Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;

DelayValidation - True

Expressions     -ConnectionString - @[User::SqlConnectionString]

在 SqlConnectionString 变量属性窗口下面的值分配

 EvaluateAsExpression    -True
 Expression              -"DataSource=" +  @[User::ServerName] + ";UserID=" +  @[User::UserName] + ";Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;Initial Catalog=" +  @[User::DBName] + ";Password=" +  @[User::Password]

部署包文件后,我将 SqlConnectionString DB_Master 中的 DBName 更改为 Master,但包执行 DB_Master 中的文件。

并且如果我给了无效的 ServerName 像 198.152.1 但包成功执行。

请告诉我我在哪里犯了错误。怎么了……?

4

2 回答 2

0

我为我的问题找到了解决方案。在Mark Wojciechowicz的帮助下。谢谢你马克。

下面是我所做的更改。

  1. 从连接字符串中删除集成安全性
  2. 在连接字符串中的数据源之间放置空格
  3. 删除ConnectionString变量的表达式(将EvaluateAsExpression设置为 False)
  4. 删除以下变量 - ServerNameUserNamepasswordDBName

    数据源=xxx.xxx.x.xxx;用户ID=xx;提供者=SQLNCLI10.1;自动翻译=False;初始目录=测试;密码=xxxxxxx

现在它正在工作并显示无效用户 ID 和密码的错误。

于 2014-12-26T06:31:02.667 回答
0

@gurunathan 检查输出是否有未设置配置的警告。当未找到配置时,将使用设计时值。

使用清单部署包时,不会自动部署 Config 文件。您需要将 dtsconfig 文件复制到目标服务器到您在包中指定的路径。即 C:\MySsisConfigs\configfile.dtsconfig

或者,您可以使用环境变量进行间接配置。这使得部署到不同的环境更容易。这是一个参考。

请注意,如果您开始添加环境变量,请务必重新启动相关服务 - SSIS 或 sql 代理,如果您最终以这种方式安排它。服务在启动时缓存环境变量的值。

编辑:配置有几个问题: - 连接字符串设置为基于其他变量的表达式,但也由包配置设置。- 连接字符串无效,因此使用了设计时间值。数据源是数据源,安全性设置为集成安全性,还传递了用户名和密码。

提示是,如果您在连接管理器上使用包配置,并且当您打开包时连接管理器损坏,则说明出现问题。

于 2014-12-17T12:14:31.443 回答