Integration Services (SSIS) Server 迁移,主要指的是SSIS Server 目录中的 SSISDB的迁移。将ssisdb迁移到其他的数据库服务器,并保证一些系统配置能用。
原文参考:https://msdn.microsoft.com/zh-cn/library/hh213291.aspx
除了备份还原SSISDB数据库外,需要做以下几个配置。
1、源SSISDB库的密匙
--这个要在源SSISDB下运行,不能在master数据库下。
USE SSISDB
go
backup master key to file = ‘e:\yucbtemp\key‘ encryption by password = ‘abcdeF1‘
2、迁移##MS_SSISServerCleanupJobLogin## 帐号
这个帐号是作业使用的
这个帐号之后两个存储过程的执行权限,如果帐号建立或者迁移的有问题,作业会执行失败。作业是清理SSIS包的日志,如果长时间不执行,包的运行速度和查询执行
结果的速度会越来越慢。可以采用微软官方的迁移方法,生成这个帐号的创建脚步,也可以用解决孤立账户的方法解决一下这个帐号。
3、迁移master数据库中的dbo.sp_ssis_startup存储过程,如果目标存在这个存储过程则不需要在创建。源机器master数据库生成脚本,在目标执行即可。
4、迁移日志清理作业SSIS Server Maintenance Job,在源机器生成脚本在目标执行即可。如果目标存在这个作业,跳过。
5、备份SSISDB库。
-----------------------------------------------------------分隔-------------------------------------------------------------
还原的步骤:
1、启用CLR
use master
go sp_configure ‘clr enabled‘, 1 reconfigure
2、创建非对称密钥,并为这个密钥创建登录名,限制权限为unsafe。(此步骤是在目标机器没有配置过SSIS目录服务的时候执行)
use master
go
Create Asymmetric key MS_SQLEnableSystemAssemblyLoadingKey
FROM Executable File = ‘C:\Program Files\Microsoft SQL Server\110\DTS\Binn\Microsoft.SqlServer.IntegrationServices.Server.dll‘
go
Create Login MS_SQLEnableSystemAssemblyLoadingUser FROM Asymmetric key MS_SQLEnableSystemAssemblyLoadingKey
go
Grant unsafe Assembly to MS_SQLEnableSystemAssemblyLoadingUser
go
这个步骤有点吭,
首先要确定“Microsoft.SqlServer.IntegrationServices.Server.dll”这个dll的位置,建议用windows搜索sql server 目录,从地址栏贴出来。
再者,如果目标服务器创建过SSIS目录服务,建议执行
Drop Asymmetric key MS_SQLEnableSystemAssemblyLoadingKey
Drop login [##MS_SQLEnableSystemAssemblyLoadingUser##]
重新执行步骤2
3、还原SSISDB,按照普通数据库还原即可。
4、创建##MS_SSISServerCleanupJobLogin##、sp_ssis_startup和日志清理作业SSIS Server Maintenance Job。
查看一下登录##MS_SSISServerCleanupJobLogin##权限是否和源一直
sp_ssis_startup存储过程是在 master数据库下
SSIS Server Maintenance Job 作业能执行成功
5、执行
use master
go
EXEC sp_procoption N‘sp_ssis_startup‘,‘startup‘,‘on‘
6、还原主密钥,在目标的SSISDB执行
USE SSISDB
go
Restore master key from file = ‘e:\yucbtemp\key‘
Decryption by password = ‘abcdeF1‘ -- ‘Password used to encrypt the master key during SSISDB backup‘
Encryption by password = ‘abcdeF123456‘ -- ‘New Password‘
Force
select * from sys.databases db WHERE db.[is_master_key_encrypted_by_server]=1 看看是否导入成功
7、检查CLR,ISServerExec 兼容性
use ssisdb
go
exec catalog.check_schema_version 0
SERVER_BUILD SCHEMA_VERSION SCHEMA_BUILD ASSEMBLY_BUILD SHARED_COMPONENT_VERSION COMPATIBILITY_STATUS
11.0.5058.0 2 11.0.2100.60 11.0.2100.0 11.0.5058.0 0
8、最终是否完成,还需要执行一下迁移过来的包是否有问题,执行成功则说明迁移成功。如果包执行失败要排除是包本身的问题,还是跟SSISDB迁移有关
比如,这次迁移之后,我们执行迁移之后的包出错:
实际上这个错误跟包内的配置文件有关Provider=SQLNCLI10.0;这个Provider在新的服务器上没有,修改成Provider=SQLNCLI11.0包就可正常执行。