以下将建立一个SQL Server SSIS包 然后在job中使用这个包,并将job部署到目标机器
1. 首先建立ssis包,使用sql server 自带的business intelligence development stdio即可定制自己所需的SSIS package
2. 将SSIS包中需要动态改变的配置导出config文件,比如数据库的连接字符串等, 在包的work flow的空白处右键,选择包配置
3. 勾选启用包配置, 添加一个xml的config文件, 然后选择需要放到config中动态配置的属性,此处我选择了一个自定义变量和两个db的连接字符串
4. 将启用包配置的勾去掉,否则编译的时候不会产生config文件。 编译SSIS package。
此时,在SSIS项目路径下的\bin\Deployment下可以看到有个.dtsx文件,和一个.DtsConfig文件一个是包文件,一个是配置文件,将来需要改变配置的属性时用notepad打开DtsConfig即可
5. 在数据库中建立一个job,在我的job中,第一步使用到了上述的SSIS package
6. 利用数据库的企业管理器将job导出脚本
7. 修改脚本, 特别注意红框标注的部分,将脚本保存
8. 编写部署脚本,个人推荐使用powershell,因为在powershell中可以修改config文件,不需要先手动修改config了
powershell脚本:
Write-Host "install the ssis package"
dtutil.exe /FILE ".\ImportClickInfo.dtsx" /DestS $LocalServer /COPY SQL";\Maintenance Plans\ImportClickInfo" Write-Host "setup the job"
sqlcmd -S $LocalServer -E -i ssis_ClickInfo.sql
cmd脚本:
@echo off
if "%1"=="" goto help
if "%1"=="/h" goto help
if "%1"=="/?" goto help
@rem install the ssis package
dtutil /FILE ImportClickInfo.dtsx /DestS %1 /COPY SQL;"\Maintenance Plans\ImportClickInfo"
@rem setup the job
sqlcmd -S %1 -E -i ssis_ClickInfo.sql
goto :eof
:help
@echo Usage:
@echo input the server name
9. 在需要部署的机器上将XXX.dtsx文件,XXX.DtsConfig文件,XXX.sql,还有用于部署的脚本文件(.cmd 或者 .ps1)复制过去
10. 修改DtsConfig中需要修改的值,如连接字符串等, 修改XXX.sql中的绝对路径地址,将ssis_conf改为目标机器上的路径
11. 在目标机器运行部署脚本,大功告成。