SSIS保留未使用和不相关的OLE DB信息
SSI为什么保留未使用和不相关的OLE DB项 在这个包中,AccessMode 4意味着它使用OpenRowsetVariable。但是,OpenRowset和SqlCommand可能具有引用包中未使用的表的值。为简洁起见,我省略了几行。即使User::StgTable可能指定CUSTOMER。OpenRowset可能引用INVENTORY,SqlCommand可能引用DIVISION表 提出这个问题的情况是,当搜索.dtsx包以查找“INVENTORY”时,会找到这个包,但实际上它并不是指INVENTORY 删除.dtsx文件中这些未使用项的文本是否安全SSIS保留未使用和不相关的OLE DB信息,ssis,Ssis,SSI为什么保留未使用和不相关的OLE DB项 在这个包中,AccessMode 4意味着它使用OpenRowsetVariable。但是,OpenRowset和SqlCommand可能具有引用包中未使用的表的值。为简洁起见,我省略了几行。即使User::StgTable可能指定CUSTOMER。OpenRowset可能引用INVENTORY,SqlCommand可能引用DIVISION表 提出这个问题的情况是,当搜索.dtsx包以查找“INVENTORY”时,会找到这个包,但实际上它并不是指I
<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中的动态表名,它不会覆盖所有场景。