SQL Server 2005数据转换服务的疑难解答(2)

http://www.itjxue.com  2015-07-17 09:25  来源:未知  点击次数: 

数据源和数据源视图属于设计时对象,只能在 BI Development Studio 项目中使用。在设计时,数据源可由项目中的一个或多个 DTS 软件包使用,但在运行时,已部署的 DTS 软件包将无法访问这些设计时对象。DTS 软件包包含多个连接,这使软件包设计器能够管理与数据库、文件等的连接。在设计时,连接可以引用数据源或数据源视图,但在运行时,DTS 连接将使所有必需的元数据能够独立使用。这样,用户可以设计能够共享数据源引用和数据源视图的不同软件包,然后独立运行并单独部署每个软件包。  

如果 DTS 连接引用了数据源,那么使用该 DTS 连接的对象就可以使用也使用该数据源的任何数据源视图。这样,DTS 软件包就可以很容易地只引用大型架构的一个小子集。

最后,DTS 连接比数据源更通用,因为它们可以连接到文本文件、HTTP 连接、FTP 连接以及需要连接字符串的其他很多情形,而不只是连接到 OLEDB 和 ADO.NET 管理的提供程序。

为什么没有 Microsoft Excel 或 Microsoft Access 数据源?

要导入 Excel 和 Access 数据文件,可以使用经过适当配置的 OLEDB 连接管理器。还可以很轻松地使用 DTS 导入/导出向导,该向导将为您创建连接管理器。

为什么 WMI 数据任务和事件任务是相互独立的?

系统管理数据可用于影响 DTS 控制流。例如,运行 ETL 流之前,可以检查 SQL Server 是否正在运行、计算机上是否有可用的 C: 驱动器或者是否有足够的可用磁盘空间。WMI 数据任务用来检索此类系统数据。

系统管理事件可用于在 DTS 控制流中执行实时操作。例如,仅当内存使用量下降到 50% 以下时才运行 ETL 流,或者仅当文件系统上有可用的新源文件时才启动数据流。WMI 事件任务允许定义和处理此类系统事件。

而且,这两种任务在所提供的功能方面也基本上是不同的。在本发行版中,我们可以更主动地根据任务提供的功能对任务进行拆分,以创建更有针对性的软件包。这种拆分的另一个例子是文件系统任务和 FTP 任务。在 DTS 2000 中,这两个任务提供的功能被组合到一个任务中,但在本发行版中,这两个任务被拆分开来,从而使用户更容易创建、理解和支持软件包。

为什么表达式语言既不是 SQL 也不是 Visual Basic?  

因为 SQL 和 Visual Basic 都不能满足 DTS 数据流的要求。例如,我们想支持一组运算符,比如用于处理很多情况下作为标记使用的位掩码的按位运算符。此外,为了更好地利用内存(从而获得最佳性能),DTS 数据流对数据类型有着严格的限制,这也反映在表达式语法中。

DTS 表达式语法使您能够设计出通过复杂的字符串和数据类型处理而获得高性能的数据流。如果表达式语言不支持您需要的某些函数,或者您更喜欢使用 Visual Basic 语法,那么您可以使用脚本组件,脚本组件允许您在数据流中使用 Visual Basic .NET。

为什么有些函数不在表达式语言中?

由于资源限制,无法实现目前可从 SQL Server TSQL 中找到的每个函数。设置第一批函数时我们曾咨询过客户和开发人员,我们会认真考虑收到的测试版反馈信息,为以后的测试版和最终版本做好准备。

为什么必须在源适配器,而不是在使用组件(例如合并)中配置排序顺序?

行的顺序是在源适配器中设置的,并且无法通过大多数下游转换进行更改(排序可能是一个例外)。能够识别源数据顺序的源适配器无需用户帮助即可设置此信息,但在大多数情况下,提供给源组件的元数据不充分,使源组件无法设置输出列排序信息,因此用户需要自行完成此操作。  

为什么必须在软件包中锁定变量?

当适于改进并发性并且这样可以提高性能和可伸缩性时,DTS 运行时将使用多个线程来完成执行。为了避免多个线程同时试图访问一个变量,必须为您的操作锁定变量,从而使对变量的所有访问都是“安全的”;如果不这样做,可能会导致软件包出现各种响应,从“有时不工作”到返回完全不正确的结果。即使软件包是完全线性的,这也可能是一个问题:例如,如果用户要更改循环中的并发设置。

(责任编辑:IT教学网)

更多

推荐SQL Server文章