`
feiliboos
  • 浏览: 672751 次
文章分类
社区版块
存档分类
最新评论

Integration Services 学习(4):包配置

 
阅读更多

Integrartion Services 包实际上就是一个对象属性的集合,在前面我们开发的所有 Integration Services包,其中的变量、属性,比如:数据库链接、同步文件目录等,我们都直接在包中用一个常量的方式,赋给这些变量或者属性,这就给这个包的发布与移置,带来很大的麻烦,比如我们在开发环境中开发包的时候,所有变量与属性都是按照开发环境来来进行设置,开发完成后,要将这个包部署到生产环境中,DB连接啊、同步目录啊等都会发生变化,以前的做法:在新环境中打开包,重新设置一遍这些变量或者属性的值,才可以正常运行。从自Integration Services 2005 以来,多了一个[包配置]功能,这个问题就迎刃而解了。配置文件可以帮助包进行无缝转移,而且可以使用配置过程自动化,从而减少了部署的麻烦,也降低了出错的风险。
  Integration Services 程序的包配置,允许将程序包、连接、容器、变量等任意SSIS属性,写入到一个XML 文件或表中,然后在运行时读取。其配置类型主要有以下几种方式:
  1、XML 配置文件。
  2、环境变量。
  3、注册表。
  4、父包变量。
  5、Sql Server。
其中,Xml 配置文件、父包变量、Sql Server 比较常见,而其它两种类型,却用得较少,下面我们将详细介绍常见的三种包配置。

  (一)、XML 配置文件。

   选择SSIS菜单--包配置,打开如下窗口,包配置就从这里开始起航。

  选中“启用包配置”,点击“新增”,如图:

  从[配置类型]下拉列表框中可以看出,有多种类型的包配置。我们在这里选择“XML配置文件”,输入配置文件名IisLog.dtsconfig。

  配置文件默认为“.dtsconfig”类型,其文件格式是标准的XML文件格式。Integration Services 对配置文件的扩展名并没有严格的规定,如果把它修改成.txt 或者.xml 等都没有关系,通常把它修改为".xml" 文件,这样通用的XML文件编辑器就可以方便地编辑了。(示例中没有修改扩展名)

  点击[下一步],就该选择配置哪些属性了,如图:

  在左边的[对象]框中,如果把所有的树结点折叠起来,可以看出包的这四类对象(变量、连接管理器、Properties、可执行文件)的属性可以通过配置文件来管理。其中[可执行文件],为控制流中的所有组件。下面我们展开所有结点,勾选要配置的属性,当选中某一个属性的时候,该属性的默认值就会在右边[属性特性]框中显示出来,这个时候也可修改。

  [下一步],如图:

  输入[配置名称],点击完成,XML的配置就这样轻松地完成了。

  我们转到配置文件存放的目录,找到刚才的配置文件"IisLog.dtsconfig ",看看它象什么样子:

XML 配置代码
<?xml version="1.0"?>
<DTSConfiguration>
<DTSConfigurationHeading>
<DTSConfigurationFileInfo GeneratedBy="BUYNOW/goumh" GeneratedFromPackageName="ImportIisLog" GeneratedFromPackageID="{F874E3F1-9FD5-4B89-8E29-A86A8E6A6783}" GeneratedDate="2010/1/13 17:36:34"/>
</DTSConfigurationHeading>
<Configuration ConfiguredType="Property" Path="/Package.Connections[ApIisLog].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>Data Source=goumh-hgh;Initial Catalog=ApIisLog;Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;Application Name=SSIS-ImportIisLog-{28895FFB-4DA0-4B30-9E59-649F1D200DFA}RD5-HGH.IisLog;</ConfiguredValue>
</Configuration>
<Configuration ConfiguredType="Property" Path="/Package.Connections[BackupFile].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>E:/inetpub/wwwroot/Sql 2008 Study/SSIS/IisLog/BackupFile</ConfiguredValue>
</Configuration>
<Configuration ConfiguredType="Property" Path="/Package/Foreach 循环容器.ForEachEnumerator.Properties[Directory]" ValueType="String">
<ConfiguredValue>E:/inetpub/wwwroot/Sql 2008 Study/SSIS/IisLog/DataFile</ConfiguredValue>
</Configuration>
<Configuration ConfiguredType="Property" Path="/Package/Foreach 循环容器.ForEachEnumerator.Properties[FileSpec]" ValueType="String">
<ConfiguredValue>*.log</ConfiguredValue>
</Configuration>
</DTSConfiguration>
  这个配置文件中,包含了包ID,属性路径、数据类型、以及属性的值。如果我们要修改包的配置,也就再也不用在打开包,来一个属性一个属性地修改了,直接修改配置文件就可以搞定,给包的发布与部署带来了相当大的方便。

  (二)、SQL Server

  这也是我们常用到的一种配置方式,配置方式与前面的XML配置大同小异,只是最后的配置属性存储到SQL Server 数据库罢了。

  在[配置类型]下拉列表框中,选择[SQL Server ],下面的配置界面也随着发生了变化。

  [连接],即SQL Server 即数据库的连接,如果从下拉列表框中,找不到对应的连接,点击[新增],就可以创建一个新的连接,这与在连接管理器中,创建OLE DB 连接是一样的。

  [配置表(A)],即配置属性存放的Table ,如果这个Table 没有事先创建好,点击[新建],系统会默认给出其如下SQL语句,点击[确定],Table 就创建完成了。

CREATE TABLE [dbo].[SSIS Configurations]
(
ConfigurationFilter NVARCHAR(255) NOT NULL,
ConfiguredValue NVARCHAR(255) NULL,
PackagePath NVARCHAR(255) NOT NULL,
ConfiguredValueType NVARCHAR(20) NOT NULL
)
  [配置筛选器(F)]:这个很关键,它是区分每个包的配置属性的key 值,也就是说,如果一个Table 中,存放有多个包的配置属性的时候,每一个包就是根据这个这个key 值来进行过滤的,所以不同的包,应该有不同的key 值。

  [下一步],选择要配置的属性,与上面讲的[XML配置文件]的处理方式一致了。

  下面,我们回到SQL Server 中,找出刚才创建的记录,看看它又是啥面貌:

  (三)、父包变量

  在Integration Services 中,有这样一个任务[执行包任务],利用这个组件,我们就可以将一个包嵌套在另一个包中,这对于我们细化包的粒度,让包的业务处理变得更单纯,非常有帮助,如下图这些模式:

  父包变量的定义也非常简单,打开包配置向导,如下图:

  [配置类型]:选择“父包变量”。

  [父变量]:这里输入父包中的变量的名称。

  [下一步],选择父包变量映射的属性名称,最后点击完成,就会获得如下图所示的效果。

  我们常见的包配置就这些了,环境变量、注册表这两种类型很少用到,这里就不多讲了。

  包配置给包的部署带来了非常大的方便,最好的方式是每个服务器使用一个配置文件。但是,从包的配置界面可以看出,一个包可以应用多个配置文件,每个包配置按照[包配置组织程序]中显示的顺序应用(父包变量除外),如果一个配置中有一项失败了,它只会发出警告,也不会引起包错误;反之,一个配置文件也可以应用到多个包中,如果我们灵活应用,包的无缝移置,也就不再是神话了。

包部署

经过前面几个章节的学习,我们开发的ETL包算已经完成一大半了,但是还不够完美,正如一场足球比赛,前面大家打得很辛苦,传接得也很漂亮,但是临门一脚的技术不过关,进不了球,一切都是白搭。今天我们就来为大家传授临门一脚的技巧:Integration Services 包部署。
  部署对于SSIS包来说,是非常重要的,在实际部署过程中也经常会遇到问题,比如包在开发环境开发完成了,Debug 一切OK,但是一到生成环境就抛锚,运行不起来,不是这里出问题,就是那里出问题;或者当用户登录到Server 上,通过DTExecUI.EXE或者DTExec.exe的方式,运行OK,但是一旦部署到Sql Server Agent 或者Windows 计划任务中,就挂了,运行不起来,而且有些问题,还让人感到莫名其妙,摸不着头脑。这些都是Integration Services 部署这个环节没有处理好,下面我将为大家细细说来,如何处理这些细节,在部署过程中,还要注意哪些问题。
  Sql Server Integration Services 提供了非常简单的部署工具,利用这些工具可以方便地将包文件(*.dtsx)、包配置文件(*.dtsconfig)以及包的其它相关文件,打包成一个安装文件,以利于到其它计算机安装与部署。
  顺便说明一下,在SQL Server Business Intelligence Development Studio开发环境的解决方案资源管理器中,默认情况下,有一个[杂项]文件夹,如果包有一些其它的相关文件,比如自述文件,操作说明等,需要一起打包,则只要将这些文件添加到此文件夹中,生成打包文件的时候,系统会自动将此文件夹下的文件,整理到打包文件夹中。

   下面我们以前面介绍的IisLog Solution 为例,来详细介绍包部署的完整过程。

  (-)生成安装部署文件。

   在SQL Server Business Intelligence Development Studio的资源管理器中,右击IisLog -->[属性],打开[IisLog 属性页],在左边的[配置属性]树中,选择[部署实用工具],右边就会显示出[部署实用工具]需要配置的属性,如图:

  AllowConfigurationChanges:设定在安装的时候,包配置文件中的属性是否允许修改。True/可修改;False/不可以修改。其安装界面的效果,稍后将会看到。

  CreateDeploymentUtility:决定是否创建安装部署文件。

  DeploymentOutputPath:设定安装部署文件存放的位置。

  按照如图所示设置各属性,点击[确定],返回到主界面。

  在[生成]菜单上,单击[生成IisLog], 就这么简单,安装部署文件就生成了。我们回到上图设置的部署文件路径,就会看到所有生成的部署文件。

  其中,IisLog.SSISDeploymentManifest,就是我们的安装文件了。

  (二) 包部署。

   将上图Deployment 文件夹下的所有文件,Copy 到目标服务器上,双击IisLog.SSISDeploymentManifest,就会弹出包的安装向导,如图:

  SSIS包一般有两种部署方式:部署到文件系统和部署到Sql Server。这两种方式,各有特点。部署到文件系统,操作会更简单,配置修改也比较容易。而部署到Sql Server ,其安全性会更高。在包的执行与调度方面,没有什么差异。

  此例中,我们选择[部署到文件系统] ,[下一步] ,如图:

 

  选择配置文件,下面的列表框,将显示配置文件的所有属性。如果在[IisLog 属性页]界面中,设置AllowConfigurationChanges=true ,则这些属性,在此处就可以修改,否则就不可以在此修改,而只有等安装完成后,再到安装文件夹下,对配置文件进行修改了。

  [下一步],再单击[确定],部署就完成了。

  转到安装文件夹,找到SSIS包文件,双击,就可以出现如图所示的运行界面了。

  默认情况下,点击[执行]就可以运行了。(左边导航栏每一项的配置,网上的介绍已经很多了,Google、Baidu一下,应用尽有,我这里也就不罗嗦了。)

  这种方式,也就是Sql Server Integration Services 提供的一个实用工具“DTExecUI.exe”。除此之外,还用另外一个实用工具“DTExec.exe”,这两个工具,在功能方面完全一样,没有什么差异,只是前者有UI界面,明确地告诉了你,每一步怎么操作。后者没有UI界面,所有的配置信息,都需要通过命令参数传入,这种方式,比较适合通过Windows 计划任务、Windows Service、Sql Server Agent 等方式自动执行SSIS包的场景。

  下面我们重点介绍Sql Server Agent执行包的详细过程,这也是Microsoft 推荐的一种调度方式,虽然Sql Server Agent Job 大家已经非常熟悉了,但是SSIS包任务的配置,对于新手来说,可能也不是那么容易。

  首先,打开Sql Server ,新建作业,如图:

  输入名称,其它默认就可以了。

  选择[步骤],点击[新建],如图:(注意,这一步很关键,与其它Job 任务的差异也就在这一步)

  [步骤名称]:随意输入。

  [类型]:选择“Sql Server Integration Services 包”。

  [运行身份]:默认情况下,该下拉列表框中只有一项“Sql Server 代理服务帐户”,选择此项。

  在[常规]选项卡下,

  [包源]:里面有三种选择:Sql Server 、文件系统,SSIS包存储区,这与前面安装部署时的选择有关系。我们选择[文件系统]。

  [包]:选择SSIS 包文件。

  [确定],返回到新建作业界面。

  配置计划,这个很简单,与其它Job 任务一样,不再累述。

  到此为止,一个Sql Server Agent Job 就配置完成了,我们终于可以舒口气了。可是没有想到:黎明前是最黑暗的,噩耗也就此开始。

  到达指定时间后,回到Sql Server Agent ,查看Job 运行历史记录,却是“满堂红”啊,如图:

  这是为什么呢?通过DTExecui.exe 能成功运行,而通过Sql Server Agent 就不能运行了?

  其实原因很简单,就是前面配置的[运行身份]的问题,DTExecui.exe 是以登录当前服务器的用户的身份来运行的,而在sql Server Agent 中,却是以 "Sql Server 代理服务帐户"的身份运行,而SSIS包中,数据库连接的密码,是基于当前机器的登录用户的,当换一个用户的时候,数据库连接字符串中的密码,自然也就不生效了。所以错误提示,Sa 连接失败。

  面对这种情况,一般有三种解决办法:

  一种是[启用包配置],将数据库连接信息写入配置文件,包无论通过什么用户运行,都会重新加载这个配置文件,问题自然也就解决了。

  第二种是重新配置Sql Agent Service 的登录帐户,缺省情况下,Sql Server Agent Service 的登录帐户为NetWork Service,我们只要把它修改成登录当前机器的用户就可以了。

  第三种解决办法就是添加代理帐户,该代理帐户的安全凭据也指向登录到当前机器的用户。这种方法用的人不多,下面我们详细介绍一下,如何建立代理帐户。

  首先,打开Sql Server Management Studio ,在[安全性]节点下,新建用户凭据,如图:

  [凭据名称]:Admin Acces(随意输入)。

  [标识]:也就是用户标识,选择登录到机器的当前用户就可以了。

  输入[密码]和[确认密码],单击[确定],就完成安全凭据的建立。

  然后,添加代理帐户。

  在Sql Server Management Studio中,找到[Sql Server 代理]-->[代理]节点,右击-->[新建代理],打开[新建代理帐户]对话框,如图:

  在常规页面:

  [代理名称]:Admin Access proxy(可以随意输入)。

  [凭据名称]:Admin Access。就是前面创建的安全性凭据。

  [对以下子系统有效]:勾选"Sql Server Integration Services ",如果此代理帐户还需要运行其它子系统,则勾选上列表中的对应项就可以了。

  切换到[主体]页面,添加服务器角色,如图:

  点击[添加],添加用户角色,如果只要求运行SSIS包的话,只选择如图两种角色就可以了。

  单击[确定],Sql Server Agent 代理帐户就建立完成了,这时我们再回到Job 部署界面,在[运行身份]下拉列表框中,就多出一项了,如图:

  我们选择刚创建的代理帐户[Admin Access Proxy],点击[确定]。这时再去查看包的运行历史记录,就春意盎然,一遍绿色了。


原文来自:雨枫技术教程网 http://www.fengfly.com
原文网址:http://www.fengfly.com/plus/view-168586-1.html

分享到:
评论

相关推荐

    Integration Services in SQL Server 2005

    **SQL Server 2005 Integration Services (SSIS)** SQL Server 2005 Integration Services, 或简称 SSIS,是微软提供的一款强大的数据集成工具,用于处理数据抽取、转换和加载(ETL)任务。它在数据仓库环境中扮演...

    Wrox.Professional Microsoft SQL Server 2008 Integration Services.rar

    《Wrox Professional Microsoft SQL Server 2008 Integration Services》是专为SQL Server 2008的Integration Services(简称SSIS)设计的一本专业指南。这本书深入探讨了这一强大的数据集成和转换工具,帮助读者...

    Integration Services Samples

    包括包执行参数化、事务支持、事件处理程序、包配置、以及与其他Microsoft BI组件如Analysis Services和Reporting Services的集成。 8. **学习资源** "Integration Services Samples" 提供的实际示例可以作为学习...

    Hands-On Microsoft SQL Server 2008 Integration Services

    《Hands-On Microsoft SQL Server 2008 Integration Services》是一本专为想要深入了解SQL Server Integration Services(SSIS)的读者量身打造的实践指南。这本书深入浅出地讲解了如何利用SSIS进行数据集成、转换和...

    专业版SQL Sever 2005 Integration Services

    《专业版SQL Sever 2005 Integration Services》是由知名技术出版社Wrox在2006年推出的一部深入解析SQL Server 2005 Integration Services(SSIS)的权威教程。SSIS是Microsoft SQL Server数据库平台中的一个关键...

    [sql server 2005 Integration Services专家教程]一书源码例子

    《SQL Server 2005 Integration Services专家教程》是一本深入探讨SQL Server 2005集成服务(SSIS)的权威指南。该书通过丰富的实例代码,旨在帮助读者掌握如何设计、开发和优化ETL(提取、转换、加载)过程,以实现...

    Wrox.Professional.Microsoft.SQL.Server.2012.Integration.Services

    7. **部署和调度**:包可以通过SQL Server代理服务进行计划执行,或者直接部署到SSIS服务器(SQL Server Integration Services Catalog),在SSMS(SQL Server Management Studio)中进行管理和调度。 8. **性能...

    《Server 2005QL 盛宴系列课程》【更新完毕】[ISO]-下载页面.rar

    9. **Integration Services**:了解SSIS(SQL Server Integration Services)的数据集成和转换能力,以及如何创建ETL(提取、转换、加载)流程。 10. **Analysis Services**:讲解OLAP(在线分析处理)和数据挖掘,...

    sql server2005 课件

    使用BULK INSERT、OPENROWSET和Integration Services进行大量数据的导入导出。 7. **Reporting Services**: SQL Server 2005的报表服务提供了一个强大的报表设计和发布平台,支持多种数据源和复杂的报表格式。 ...

    webservices例子

    总的来说,这个“webservices例子”是一个很好的学习资源,可以帮助我们理解如何使用Axis2框架创建、部署和测试Web服务。通过实际操作,你可以更深入地了解Web服务的生命周期以及其与 Axis2 的交互方式。

    零基础学SQL Server 2005 电子教程

    9. **Integration Services**:了解ETL(提取、转换、加载)流程,学习如何使用SSIS(SQL Server Integration Services)设计和执行数据迁移和清洗任务。 10. **Analysis Services**:理解OLAP(在线分析处理)和...

    SQL 2005课件

    11. **Integration Services**:理解数据集成过程,学习设计和执行ETL(提取、转换、加载)任务,以及数据清洗和转换。 12. **Reporting Services**:了解报表服务的工作原理,学习报表设计、发布和订阅,以及如何...

    SQLServer2005 Integration Service进行导入导出例子

    你可以通过打开这些示例来学习如何配置数据源和目标,如何设置数据流转换,以及如何控制包的执行逻辑。 在学习SSIS时,了解C#和ASP.NET也是很重要的,因为它们可以用来编写自定义任务或组件,以及自动化包的执行。...

    SQLSERVER 精华

    12. **Integration Services**:了解SSIS(SQL Server Integration Services)在ETL(提取、转换、加载)过程中的应用。 13. **Analysis Services**:学习使用SQL Server Analysis Services进行多维数据建模,实现...

    SQLServer2005 Integration Service的特性与应用

    SQL Server 2005 Integration Services(简称SSIS)是微软提供的一款强大的数据集成和转换工具,用于在企业级环境中执行ETL(提取、转换、加载)任务。它是在SQL Server 2000的Data Transformation Services(DTS)...

    SQL Sever2005数据库简明教程 电子教案

    4. **T-SQL编程**:学习基本的DML(数据操纵语言)和DDL(数据定义语言)命令,如INSERT、UPDATE、DELETE和CREATE TABLE。 5. **视图和存储过程**:使用视图封装复杂查询,编写存储过程以实现业务逻辑。 6. **安全性...

    SQL Server 2005 ETL专家系列-05 SQL Server 2005 Integration Service的高级应用

    对于那些想要深入学习和应用SQL Server 2005 Integration Services的学员,所提供的"TechNet中文网络广播首页.url"和"查看本次课程问题解答.url"链接可能包含更多课程资料和互动讨论,而"msft032107vxpm.wmv"可能是...

    SQL Server 2005 ETL专家系列-06 SQL Server 2005 Integration Service的运行管理

    通过学习这一系列课程,IT专业人士将掌握如何有效地管理和运行SQL Server 2005 Integration Services,从而提升数据处理的效率和准确性。文件列表中的"msft032707vxpm.wmv"可能是该系列课程的视频回放,帮助观众更...

    Java Web Services实例

    总的来说,这个压缩包提供了一个丰富的学习资源,帮助开发者深入理解Java Web Services的各个方面,并通过实践提升技能。无论是初学者还是有经验的开发者,都能从中受益,进一步提升自己的Web服务开发能力。

    1.sql.server.2005.概述和安装 1.sql.server.2005.概述和安装

    - **Integration Services**:前身是Data Transformation Services (DTS),用于数据集成、转换和加载,支持ETL(提取、转换、加载)过程。 - **Notification Services**:提供自定义的事件通知功能,可以基于数据库...

Global site tag (gtag.js) - Google Analytics