我正在从事一个由另一个人拥有的项目。他创建了一项工作来更新SQL Server中少数几个表中的字段。该工作基于SSIS程序包。现在,我有了DTSX文件和已禁用的作业。当我在更改DTSX文件中的旧凭据后尝试启用作业时,出现了奇怪的错误。我想查看SSIS包背后的代码,并想了解更新过程的编码方式。 有办法吗?
答案 0 :(得分:2)
创建一个新的解决方案并将DTSX文件导入其中。 Visual Studio只是SSIS包的美化XML编辑器。
答案 1 :(得分:2)
我想查看SSIS软件包背后的代码,并想了解更新过程的编码方式
正如提到的其他答案一样,dtsx文件是XML文件,您可以简单地使用文本编辑器打开这些文件以检查后面的代码,也可以简单地使用Visual Studio创建一个新的Integration Services项目并添加包以检查其内容。控制流。
我添加了自己的答案,以列出我发布的与此问题相关的一些内容,因为它可能会给您带来一些见解:
答案 2 :(得分:1)
DTSX文件只是XML文件。只需重命名为xml,然后使用编辑器打开即可。
查询是通过字符串连接构建的字符串。
答案 3 :(得分:1)
根据要使用的SSIS版本,您需要查看软件包的XML(如果已打开软件包,则为F7)并找到类似以下内容的块
<DTS:Executable
DTS:refId="Package\Execute SQL Task"
DTS:CreationName="Microsoft.ExecuteSQLTask"
DTS:Description="Execute SQL Task"
DTS:DTSID="{93D895E6-A316-4718-9C97-4A5652ABD28C}"
DTS:ExecutableType="Microsoft.ExecuteSQLTask"
DTS:LocaleID="-1"
DTS:ObjectName="Execute SQL Task"
DTS:TaskContact="Execute SQL Task; Microsoft Corporation; SQL Server 2017; © 2017 Microsoft Corporation; All Rights Reserved;http://www.microsoft.com/sql/support/default.asp;1"
DTS:ThreadHint="0">
<DTS:Variables />
<DTS:ObjectData>
<SQLTask:SqlTaskData
SQLTask:Connection="{CEE71D69-1F9F-46FA-A22F-C9EB60670EA0}"
SQLTask:SqlStatementSource="UPDATE T SET Count = Count+1 FROM dbo.Table AS T;" xmlns:SQLTask="www.microsoft.com/sqlserver/dts/tasks/sqltask" />
</DTS:ObjectData>
</DTS:Executable>
此任务使用与SQLTask:SqlStatementSource
实体相关联的“硬编码”语句。
但是,如果Execute SQL Task是由变量驱动的,那么您将看到如下所示的XML块。那里没有实际的查询,因此您必须找到定义<Variables>
的{{1}}集合,然后才拥有设计时间值,而没有运行时间值
User::MyQueryVariable
最后,为了完整起见,如果开发人员指定了“文件源”,您会看到类似的内容
<DTS:ObjectData>
<SQLTask:SqlTaskData
SQLTask:Connection="{CEE71D69-1F9F-46FA-A22F-C9EB60670EA0}"
SQLTask:SqlStmtSourceType="Variable"
SQLTask:SqlStatementSource="User::MyQueryVariable" xmlns:SQLTask="www.microsoft.com/sqlserver/dts/tasks/sqltask" />
</DTS:ObjectData>
然后,您还需要在XML中找到 <DTS:ObjectData>
<SQLTask:SqlTaskData
SQLTask:Connection="{CEE71D69-1F9F-46FA-A22F-C9EB60670EA0}"
SQLTask:SqlStmtSourceType="FileConnection"
SQLTask:SqlStatementSource="FileConnectionSource" xmlns:SQLTask="www.microsoft.com/sqlserver/dts/tasks/sqltask" />
</DTS:ObjectData>
的定义。