我可以在记事本中编辑SSIS包文件并使用它吗?

Ame*_*aik 4 ssis

我刚刚使用notepad ++从bin文件夹中打开了一个SSIS包文件.该文件以xml语法打开.我可以在记事本++中编辑此文件并使用它吗?或者它在编辑后需要某种编译方式?

bil*_*nkc 6

编辑SSIS包

SSIS包只是XML.是的,您可以使用自己喜欢的文本编辑器进行编辑.

有时通过文本编辑器编辑包比使用Visual Studio/BIDS/SSDT-BI更快,更有效.假设数据流中的字符串大小从30增加到50,并且您有一个Union All.Union All上游的组件将"听到"长度变化,但Union All下游的组件将停留在30.在VS中修复它的唯一方法是从Union All(以及所有下游)中删除列它的消费者)然后读它.并可能将其重新添加到所有这些中.

也就是说,容易犯错并最终得到一个FUBARed的软件包.但是既然你使用版本控制(我不关心什么,只是你使用的东西),你可以很容易地回到已知的良好状态.

编译SSIS包

编译SSIS包并不是一件"事情".从语言的角度来看,SSIS包中的XML已经被编译为字节代码级别.这是一个慷慨的声明,我承认,但简而言之,没有进一步的汇编.该包被解释并确定,也许这些指令进一步优化,但在编辑包内导致比手工编写的更"编译"的秘密酱.

<?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>
Run Code Online (Sandbox Code Playgroud)

以上是定义2012 SSIS Hello World包的XML.它什么都不做,甚至没有打印Hello World,但是已经为解释器做好了准备.

正如我在下一节中所述,如果这是项目部署模型,那么就有一个编译步骤.SSIS项目包含Packages + Project级别参数(即使为空)+项目级别连接管理器(如果存在).所有这些东西都必须存在,加上一个枚举项目内容的清单文件和一个类型文件(所有项目的标准文件).所有垃圾都被压缩到一个名为.ispac文件的文件中.该.ispac文件的创建超出了使用常规方法在文本编辑器中完成的操作.

这是我从Visual Studio中看到的项目

在此输入图像描述

这就是生成的.ispac文件的样子

在此输入图像描述

使用SSIS包

当Visual Studio/BIDS/SSDT-BI运行包时,它使用dtexec.exe.从技术上讲,它使用DtsDebugHost但只能在Visual Studio的上下文中使用.如果要从选择的文本编辑器中"使用"SSIS包,则需要链接到dtexec位置(x86或程序文件,具体取决于所使用的驱动程序),并设置一个参数,如/file %1%1表示当前的文件名.

如果您正在使用2012年的新项目部署模型,那么这将变得更加复杂.您需要将当前文件与project.params文件和任何项目级连接管理器一起编译为.ispac文件,然后从ispac的上下文中运行该包.示例参数列表看起来像/package %1 /project %2%2是ispac文件.