如果你曾经将数据从SQL Server中移入或者移出,那么你现在就可以使用微软的DTS或者微软的数据传输服务工具来完成了。DTS是一个ETL(是抽取、传输和载入的缩写)的工具,它可以让数据库管理员们创建一系列步骤来描述数据是如何被传输的。这些“包”,正如它们的名字,是可以通过一些不同的程序语言或者直接在SQL 服务器自身运行的。
这个想法一直以来都是一个不错的想法,但是无论如何还是有局限的——如果使用早期版本的SQL Server的块拷贝系统的版本很方便的话,它还是能够继续荣耀下去的。在SQL Server2005上,微软决定将DTS变成一种全新的ETL工具——SQL Server综合服务(SSIS)。将数据从一个数据库移动到另外一个数据库上或者是以另外一种格式导出数据库,是你可以使用的SSIS的最基本的用途。这里是一些使用SSIS的一些其他原因:
数据清洁
如果你有一个数据集是不“干净”的,例如它没有被标准化,SSIS有一系列的工具集可以用来清洁和标准化数据。其中包括类似“模糊”匹配和分组的函数,那么那些看起来是一样的数据(只是经过了不同的导入和导出)就可以被过滤掉并标准化。有关这一点的一个很好的例子就是来自不同地理区域的拥有不同种类的数据:同样的想法也可以通过不同的方式来表达,它们在被处理之前需要被标准化。
连接到分析服务立方体上
你可以使用SSIS将数据直接通过管道连接到立方体上,以便于数据挖掘。除了将这些数据导入本地数据库,然后在那里进行挖掘之外,SSIS包自身也可以用于数据源。
与SQL Server报告服务整合
对于分析立方体,SSIS包还可以直接用于数据源来创建报告。
完全的.NET报告
这或许是假设的,但是SSIS编程的确可以在本地或者通过COM对象接口在任何一种.NET语言中完成——或者,实际上,任何支持COM对象的语言。
最终的结果就是你导入数据集的系统,以及你创建的包可以更加像是经过变成的对象,而不是静态的数据那样工作。正是这种想法,它允许用户预先以报告服务的方式进行编程,分析家说。
服务,数据和数据库自身,都会彼此之间对话。例如,归档的遗留数据可以继续为形式分析师或者数据挖掘使用,即使它们在技术上说已经是下线了。另外一个例子就是数据从多个静态集合中活动的集成,例如我前面的提到的那种情况,来自多个地理位置的数据。
因为SSIS是可编程的,它的功能就可以在很大范围内被环境所调用。例如,一个ASP.NET驱动的网站可以是运行SSIS包的管理前端,或者可以是一个独立的连接到SSIS的应用程序,出于自己的使用而获取并提炼数据。能够程序地驱动SQL Server的想法已经出现很长一段时间了,但是是SSIS使得能够与所有事物对话成为可能,包括SQL Server也使用的东西——一次,并且是以统一的方式。一个程序员也可以创建定制的SSIS扩展,例如客户数据传输或者计数器。你可以在另外一个应用程序或者其他的整个环境中再次利用它们。
SSIS中的包可以用商务智能设计套件(Business Intelligence Design Studio)来编写,这个工具是随SQL Server2005发售的。结果文件大多数都是XML格式,所以如果需要的话,它们可以被察看或者手工地修改。注意,SSIS中的一些功能——数据挖掘连接和模糊分组及查找,这两项——都只有在企业版的SQL Server2005中才可以找到。SSIS不是在所有的SQL Server 2005 Express Edition中都可以获得,所以如果你创建了SSIS包,那么你就只能在SQL Server的完全版本中使用它们。最后,当你使用SSIS创建程序性的解决方案的时候,它们需要的确是设计用来在完全支持SSIS的其他环境中工作。