DTS 包无法编辑参数
DTS Package unable to edit parameters
我有一个 DTS 包,但遇到了一个非常奇怪的问题。
如果我打开解决方案,当我查看一个包时,我可以查看和编辑参数列表。
如果我打开同一个文件,只是作为一个独立的文件,那么尽管我可以看到其他所有内容。参数列表返回空白。
有人有解决办法吗?
根据要求提供一些额外信息。
如果我直接在 Visual Studio(本例中为 2012)中打开文件并查看参数列表,我会得到以下信息:
当我打开同一个文件作为项目的一部分时,我得到以下信息:
没有报告错误,但是当我单独打开文件时,我再也看不到参数了。
好的,看来您想在 SSIS 项目上下文之外编辑包参数的设计时值。如您的屏幕截图所示,如果您打开其中包含包参数的 SSIS 包,则不会显示它们。如果您单击使用经典包部署模型的 SSIS 项目的“参数”选项卡,您会得到相同的行为。
这似乎是设计使然,但欢迎您打开一个连接项目,看看产品团队是否会改变这种行为。
同时,我看到了两种方法。第一种是手动编辑 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,但通过应用配置,我知道当这个包在目录中运行时,它将使用配置值而不是设计时值。在 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;
我有一个 DTS 包,但遇到了一个非常奇怪的问题。
如果我打开解决方案,当我查看一个包时,我可以查看和编辑参数列表。
如果我打开同一个文件,只是作为一个独立的文件,那么尽管我可以看到其他所有内容。参数列表返回空白。
有人有解决办法吗?
根据要求提供一些额外信息。
如果我直接在 Visual Studio(本例中为 2012)中打开文件并查看参数列表,我会得到以下信息:
当我打开同一个文件作为项目的一部分时,我得到以下信息:
没有报告错误,但是当我单独打开文件时,我再也看不到参数了。
好的,看来您想在 SSIS 项目上下文之外编辑包参数的设计时值。如您的屏幕截图所示,如果您打开其中包含包参数的 SSIS 包,则不会显示它们。如果您单击使用经典包部署模型的 SSIS 项目的“参数”选项卡,您会得到相同的行为。
这似乎是设计使然,但欢迎您打开一个连接项目,看看产品团队是否会改变这种行为。
同时,我看到了两种方法。第一种是手动编辑 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,但通过应用配置,我知道当这个包在目录中运行时,它将使用配置值而不是设计时值。在 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;