SSIS保留未使用和不相关的OLE DB信息

SSIS保留未使用和不相关的OLE DB信息,ssis,Ssis,SSI为什么保留未使用和不相关的OLE DB项 在这个包中,AccessMode 4意味着它使用OpenRowsetVariable。但是,OpenRowset和SqlCommand可能具有引用包中未使用的表的值。为简洁起见,我省略了几行。即使User::StgTable可能指定CUSTOMER。OpenRowset可能引用INVENTORY,SqlCommand可能引用DIVISION表 提出这个问题的情况是,当搜索.dtsx包以查找“INVENTORY”时,会找到这个包,但实际上它并不是指I

SSI为什么保留未使用和不相关的OLE DB项

在这个包中,AccessMode 4意味着它使用OpenRowsetVariable。但是,OpenRowset和SqlCommand可能具有引用包中未使用的表的值。为简洁起见,我省略了几行。即使User::StgTable可能指定CUSTOMER。OpenRowset可能引用INVENTORY,SqlCommand可能引用DIVISION表

提出这个问题的情况是,当搜索.dtsx包以查找“INVENTORY”时,会找到这个包,但实际上它并不是指INVENTORY

删除.dtsx文件中这些未使用项的文本是否安全

<component
    description="OLE DB Destination"
    <properties>
        <property
            dataType="System.Int32"
            description="The number of seconds before a command times out.  A value of 0 indicates an infinite time-out."
            name="CommandTimeout">0</property>
        <property
            dataType="System.String"
            description="Specifies the name of the database object used to open a rowset."
            name="OpenRowset"></property>
        <property
            dataType="System.String"
            description="Specifies the variable that contains the name of the database object used to open a rowset."
            name="**OpenRowsetVariable**">**User::TableNameStg**</property>
        <property
            dataType="System.String"
            description="The SQL command to be executed."
            name="SqlCommand"
            UITypeEditor="Microsoft.DataTransformationServices.Controls.ModalMultilineStringEditor, Microsoft.DataTransformationServices.Controls, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"></property>
        <property
            dataType="System.Int32"
            description="Specifies the mode used to access the database."
            name="AccessMode"
            typeConverter="**AccessMode**">**4**</property>

答案很简单-dtsx文件将与SSIS引擎一起使用,并使用Visual Studio进行编辑,而不是直接编辑。
在执行时,启动SSIS引擎将dtsx文件加载到引擎中的配置中,并根据提供的数据连接对其进行验证。一些参数可能未使用,其缺失不会影响加载和验证过程;但是,Microsoft未对此进行记录和支持。您必须亲自测试。

根据我的经验,可以在不影响包功能的情况下删除DTSXXML的一些标记和部分。对于所有任务的DTSID属性和图表布局,都是如此。但是,在打开的下一个文件中,Visual Studio会重新添加这些属性。

使用Visual Studio,如何确定所有实际访问CUST_LOC表的包?47个解决方案中有400多个包,每个解决方案都在一个单独的目录中。@对于单个包,您无法确定。OLE DB Dest可以使用变量内容作为表名,并且在包中动态定义您的
CUST\u LOC
;SSIS允许这样做。您最多可以在包文本中搜索表名,但缺席不能证明包没有访问搜索的表。我将把这标记为答案。不是因为它回答了问题,而是因为我相信这是真的。当数据库表名仅在运行时(动态)已知时,无法从包的内容中知道使用了什么表。但是,应该可以找到许多对包中使用的表的引用,甚至是SQL代理作业命令行和项目参数指定的动态引用。这似乎是SSI缺乏可管理性的一个方面。@您可以做的是分析包的执行日志;它将告诉您数据流任务正在访问的表名。但是,对于DFT中的动态表名,它不会覆盖所有场景。