动态连接字符串在SSIS包2008R2中不起作用

时间:2014-12-12 11:16:22

标签: ssis ssis-2008

我正在使用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,然后单击值assign

下面的属性窗口
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,但包已成功执行。

请告诉我哪里弄错了。出了什么问题......?

2 个答案:

答案 0 :(得分:0)

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

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

或者,您可以将环境变量用于间接配置。这使得更容易部署到不同的环境。 Here's对此的参考。

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

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

提示是,如果您在连接管理器上使用程序包配置,并且在打开程序包时连接管理器已损坏,则表示某些内容不正确。

答案 1 :(得分:0)

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

以下更改完成。

  1. 从连接字符串
  2. 中删除集成安全性
  3. 在连接字符串
  4. 中的数据源之间留出空格
  5. 删除 ConnectionString 变量的表达式(将 EvaluateAsExpression 设置为False)
  6. 删除以下变量 - ServerName 用户名密码 DBName

    Data Source = xxx.xxx.x.xxx; User ID = xx; Provider = SQLNCLI10.1; Auto Translate = False; Initial Catalog = Test; Password = xxxxxxx

  7. 现在它正在运行并显示无效用户ID和密码的错误。