我有一个DTS包,我遇到了一个非常奇怪的问题。
如果我打开解决方案,当我查看包时,我可以查看和编辑参数列表。
如果我打开同一个文件,就像一个独立的文件一样,那么虽然我可以看到其他所有内容。参数列表空白。
有没有人有解决方案?
根据要求提供一些额外信息。
如果我直接在Visual Studio中打开文件(在本例中为2012)并查看参数列表,我会得到以下内容:
当我作为项目的一部分打开同一个文件时,我得到以下内容:
没有报告错误,但当我单独打开文件时,我再也看不到参数了。
答案 0 :(得分:0)
好的,似乎你想在SSIS项目的上下文之外编辑包参数的设计时间值。如屏幕截图所示,如果打开包含参数包的SSIS包,则不会显示它们。如果单击使用经典Package部署模型的SSIS项目的Parameter选项卡,则会出现相同的行为。
这似乎是设计使然,但欢迎您打开Connect项目以查看产品团队是否会更改此行为。
与此同时,我看到了两种方法。第一种是手动编辑XML。右键单击,查看代码,您将找到如下所示的部分。更改ParameterValue
部分的值,您就会下雨。当然,最重要的是在使用XML之前确保你拥有一个已知的,安全的,可恢复的软件包版本 - 最好是在某种版本控制中。
<DTS:PackageParameters>
<DTS:PackageParameter
DTS:CreationName=""
DTS:DataType="3"
DTS:DTSID="{C6988EC3-F273-4889-83B8-02A4AC8F6E9A}"
DTS:ObjectName="MyParameter">
<DTS:Property
DTS:DataType="3"
DTS:Name="ParameterValue">0</DTS:Property>
</DTS:PackageParameter>
</DTS:PackageParameters>
一种不同的方法,我可能会采用的方法是不关心软件包在磁盘上的含义。相反,我会在部署后专注于价值。
考虑以下代码,它在SSISDB中应用一个配置,确保MyParamter的值始终为1.静止时,值为0但是通过应用配置,我知道当这个包在目录中运行时,它& #39;将使用配置的值而不是设计时值。在受SOX / SAS70 / HIPPA / PCI等变更控制的地方,这种方法通常也会被接受。
DECLARE @var int = 1;
EXEC SSISDB.catalog.set_object_parameter_value
@object_type = 30
, @parameter_name = N'MyParameter'
, @object_name = N'Package.dtsx'
, @folder_name = N'Deploy'
, @project_name = N'SO_ProjectDeploymentModel'
, @value_type = V
, @parameter_value = @var;