我可以在记事本中编辑 SSIS 包文件并使用它吗?
Can i edit SSIS package file in Notepad and use it?
我刚刚使用记事本++从bin文件夹中打开了一个SSIS包文件。
该文件以 xml 语法打开。
我可以在记事本++中编辑这个文件并使用它吗?
或者它在编辑后需要某种编译之类的东西?
编辑 SSIS 包
一个 SSIS 包就是 XML。所以是的,您可以使用您最喜欢的文本编辑器对其进行编辑。
有时通过文本编辑器编辑包比使用 Visual Studio/BIDS/SSDT-BI 更快更有效。假设数据流中的字符串的大小从 30 增加到 50,并且其中有一个 Union All。 Union All 上游的组件将 "hear" 长度发生变化,但 Union All 下游的组件将停留在 30。在 VS 中修复它的唯一方法是从 Union All(以及所有它的下游消费者),然后读取它。并有可能将其重新添加到所有这些。
也就是说,非常 容易犯错误并最终得到一个 FUBARed 包。但是因为你使用版本控制(我不在乎什么,只是你使用了一些东西)你可以轻松回滚到已知的良好状态。
正在编译 SSIS 包
编译 SSIS 包并不是真正的 "thing"。从语言的角度来看,SSIS 包中的 XML 已经编译为字节码级别。我承认这是一个慷慨的声明,但简而言之,没有进行进一步的编译。包是经过解释的,当然,也许这些说明会得到进一步优化,但在编辑包的过程中并没有秘诀,它比手写的内容 "compiled" 多。
<?xml version="1.0" encoding="utf-8"?>
<DTS:Executable DTS:CreationDate="09/12/2015 11:28:01" DTS:CreationName="SSIS.Package.3" DTS:CreatorComputerName="RHUDAUR" DTS:CreatorName="bfellows" DTS:DTSID="{F003ACF1-6676-485A-9E3E-568DFE7FCE55}" DTS:ExecutableType="SSIS.Package.3" DTS:LastModifiedProductVersion="" DTS:LocaleID="1033" DTS:ObjectName="HelloWorld" DTS:ProtectionLevel="0" DTS:refId="Package" DTS:VersionBuild="0" DTS:VersionGUID="{83703EB8-3F47-4F50-9992-CF0AAA544FAD}" DTS:VersionMajor="0" xmlns:DTS="www.microsoft.com/SqlServer/Dts">
<DTS:Property DTS:Name="PackageFormatVersion">6</DTS:Property>
</DTS:Executable>
以上是定义 2012 SSIS Hello World 包的 XML。它什么都不做,甚至不打印 Hello World 但这已经为解释器准备好了。
正如我在下一节中所述,如果这是项目部署模型,则存在某种编译步骤。那里的 SSIS 项目包含包 + 项目级参数(即使为空)+ 项目级连接管理器(如果存在)。所有这些东西都必须存在,再加上一个列举项目内容的清单文件和一个类型文件(所有项目的标准文件)。所有这些 junk 都被压缩到一个名为 .ispac 的文件中。该 .ispac 文件的创建超出了您使用普通方法在文本编辑器中完成的范围。
这是我从 Visual Studio
看到的项目
这是生成的 .ispac 文件的样子
使用 SSIS 包
当 Visual Studio/BIDS/SSDT-BI 运行 是一个包时,它使用 dtexec.exe。从技术上讲,它使用 DtsDebugHost
,但这仅适用于 Visual Studio 的上下文。如果你想从文本编辑器选择 "use" SSIS 包,你需要 link 到 dtexec 位置(x86 或程序文件,取决于使用的驱动程序)并设置一个参数如 /file %1
其中 %1 表示当前文件名。
如果您使用的是 2012 年新增的项目部署模型,那么这将变得更加复杂。您需要将当前文件与 project.params 文件和任何项目级别的连接管理器一起编译为 .ispac 文件,然后 运行 来自 ispac 上下文的包。示例参数列表类似于 /package %1 /project %2
,其中 %2 是 ispac 文件。
我刚刚使用记事本++从bin文件夹中打开了一个SSIS包文件。 该文件以 xml 语法打开。 我可以在记事本++中编辑这个文件并使用它吗? 或者它在编辑后需要某种编译之类的东西?
编辑 SSIS 包
一个 SSIS 包就是 XML。所以是的,您可以使用您最喜欢的文本编辑器对其进行编辑。
有时通过文本编辑器编辑包比使用 Visual Studio/BIDS/SSDT-BI 更快更有效。假设数据流中的字符串的大小从 30 增加到 50,并且其中有一个 Union All。 Union All 上游的组件将 "hear" 长度发生变化,但 Union All 下游的组件将停留在 30。在 VS 中修复它的唯一方法是从 Union All(以及所有它的下游消费者),然后读取它。并有可能将其重新添加到所有这些。
也就是说,非常 容易犯错误并最终得到一个 FUBARed 包。但是因为你使用版本控制(我不在乎什么,只是你使用了一些东西)你可以轻松回滚到已知的良好状态。
正在编译 SSIS 包
编译 SSIS 包并不是真正的 "thing"。从语言的角度来看,SSIS 包中的 XML 已经编译为字节码级别。我承认这是一个慷慨的声明,但简而言之,没有进行进一步的编译。包是经过解释的,当然,也许这些说明会得到进一步优化,但在编辑包的过程中并没有秘诀,它比手写的内容 "compiled" 多。
<?xml version="1.0" encoding="utf-8"?>
<DTS:Executable DTS:CreationDate="09/12/2015 11:28:01" DTS:CreationName="SSIS.Package.3" DTS:CreatorComputerName="RHUDAUR" DTS:CreatorName="bfellows" DTS:DTSID="{F003ACF1-6676-485A-9E3E-568DFE7FCE55}" DTS:ExecutableType="SSIS.Package.3" DTS:LastModifiedProductVersion="" DTS:LocaleID="1033" DTS:ObjectName="HelloWorld" DTS:ProtectionLevel="0" DTS:refId="Package" DTS:VersionBuild="0" DTS:VersionGUID="{83703EB8-3F47-4F50-9992-CF0AAA544FAD}" DTS:VersionMajor="0" xmlns:DTS="www.microsoft.com/SqlServer/Dts">
<DTS:Property DTS:Name="PackageFormatVersion">6</DTS:Property>
</DTS:Executable>
以上是定义 2012 SSIS Hello World 包的 XML。它什么都不做,甚至不打印 Hello World 但这已经为解释器准备好了。
正如我在下一节中所述,如果这是项目部署模型,则存在某种编译步骤。那里的 SSIS 项目包含包 + 项目级参数(即使为空)+ 项目级连接管理器(如果存在)。所有这些东西都必须存在,再加上一个列举项目内容的清单文件和一个类型文件(所有项目的标准文件)。所有这些 junk 都被压缩到一个名为 .ispac 的文件中。该 .ispac 文件的创建超出了您使用普通方法在文本编辑器中完成的范围。
这是我从 Visual Studio
看到的项目这是生成的 .ispac 文件的样子
使用 SSIS 包
当 Visual Studio/BIDS/SSDT-BI 运行 是一个包时,它使用 dtexec.exe。从技术上讲,它使用 DtsDebugHost
,但这仅适用于 Visual Studio 的上下文。如果你想从文本编辑器选择 "use" SSIS 包,你需要 link 到 dtexec 位置(x86 或程序文件,取决于使用的驱动程序)并设置一个参数如 /file %1
其中 %1 表示当前文件名。
如果您使用的是 2012 年新增的项目部署模型,那么这将变得更加复杂。您需要将当前文件与 project.params 文件和任何项目级别的连接管理器一起编译为 .ispac 文件,然后 运行 来自 ispac 上下文的包。示例参数列表类似于 /package %1 /project %2
,其中 %2 是 ispac 文件。