我正在使用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,但包已成功执行。
请告诉我哪里弄错了。出了什么问题......?
答案 0 :(得分:0)
@gurunathan检查输出是否有未配置配置的警告。如果未找到配置,则使用设计时间值。
使用清单部署程序包时,不会自动部署Config文件。您需要将dtsconfig文件复制到目标服务器到您在程序包中指定的路径。即C:\ MySsisConfigs \ configfile.dtsconfig
或者,您可以将环境变量用于间接配置。这使得更容易部署到不同的环境。 Here's对此的参考。
请注意,如果您开始添加环境变量,请确保重新启动相关服务-SSIS或sql代理,如果您最终以这种方式安排它。服务在启动时缓存环境变量的值。
编辑: 配置存在一些问题: - 连接字符串设置为基于其他变量的表达式,但也由包配置设置。 - 连接字符串无效,因此正在使用设计时间值。数据源是DataSource,安全性设置为集成安全性,但也传递用户名和密码。
提示是,如果您在连接管理器上使用程序包配置,并且在打开程序包时连接管理器已损坏,则表示某些内容不正确。
答案 1 :(得分:0)
我找到了解决问题的方法。在 Mark Wojciechowicz 的帮助下。谢谢你马克。
以下更改完成。
删除以下变量 - ServerName ,用户名,密码, DBName 。
Data Source = xxx.xxx.x.xxx; User ID = xx; Provider = SQLNCLI10.1; Auto Translate = False; Initial Catalog = Test; Password = xxxxxxx
现在它正在运行并显示无效用户ID和密码的错误。