SSISDB 迁移

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## 帐号

这个帐号是作业使用的

image  image

这个帐号之后两个存储过程的执行权限,如果帐号建立或者迁移的有问题,作业会执行失败。作业是清理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迁移有关

比如,这次迁移之后,我们执行迁移之后的包出错:

image

实际上这个错误跟包内的配置文件有关Provider=SQLNCLI10.0;这个Provider在新的服务器上没有,修改成Provider=SQLNCLI11.0包就可正常执行。

原文地址:https://www.cnblogs.com/luck001221/p/4270190.html