我有一个带有保护级别的SSIS包 - EncryptSensitiveWithPassword ,我可以在BIDS中执行此包。
尝试使用程序包部署向导部署到文件系统时,我收到错误
包的保护级别需要密码,但是 包密码属性为空
我应该在哪里设置此密码? (在设计师的BIDS中,我设置了这个密码,在尝试打开项目时,它甚至要求我输入密码)所以对于部署是否还有另一个要设置的属性?
答案 0 :(得分:2)
此错误通常是由于配置中属性PackagePassword
为空而导致的。请检查它,如果没有设置,请设置。
使用密码打开包后,还要将保护级别更改为DontSaveSensitive
。然后将软件包添加到您的解决方案中,完成后,将保护级别设置为SaveSensitiveWithPassword
。
尝试使用这些设置部署您的包。
答案 1 :(得分:1)
根据user2339071的回答,如果你的连接中没有任何密码(即你使用windows trusted security),那么你实际上并不需要密码。
但是,假设你这样做......(也许你可以在最初的问题中进行校准):
我的理解是包密码基本上是在运行时指定的,而不是部署时间。
当你的DTSX文件存在于文件系统中时(在部署或直接复制之后),你需要以某种方式执行它,并指定包密码。
例如,如果使用SQL Agent运行程序包,则会在作业中找到一个输入该程序包密码的字段。如果您直接使用DTEXEC.EXE,那么您的包密码也会有一个开关。
我个人不使用软件包部署向导,我只是将DTSX文件复制到目标文件位置。
答案 2 :(得分:0)
使用类似于以下示例之一的命令设置或更改程序包或程序包的保护级别:
以下命令将文件系统中单个程序包的ProtectionLevel属性设置为级别2,“使用密码加密敏感”,并使用密码“strongpassword”:
dtutil.exe / file“C:\ Package.dtsx”/ encrypt file;“C:\ Package.dtsx”;; 2; strongpassword
以下命令将文件系统中特定文件夹中所有程序包的ProtectionLevel属性设置为级别2,“使用密码加密”,密码为“strongpassword”:
for(* .dtsx)中的%f执行dtutil.exe / file%f / encrypt文件;%f; 2; strongpassword
如果在批处理文件中使用类似命令,请在批处理文件中输入文件占位符“%f”作为“%% f”。
答案 3 :(得分:0)