MSSQL手动迁移Login账号、DBLink、AgentJOB等信息

0    946    4

👉 本文共约3306个字,系统预计阅读时间或需13分钟。

MSSQL迁移方案概览

云数据库SQL Server提供了多种数据迁移方案,可满足不同业务需求,使您可以在不影响业务的情况下平滑将数据库迁移至云数据库SQL Server。

迁移场景文档链接
使用界面方式迁移SQL Server库表数据通过数据管理服务导出SQL Server库表数据
云数据库备份文件迁移到云数据库SQL Server云数据库SQL Server全量备份迁移到云数据库SQL Server
本地备份文件迁移到云数据库SQL Server本地SQL Server备份文件迁移到云数据库SQL Server

操作场景

1、从本地或虚拟机通过DRS备份迁移功能直接迁移到本云RDS for SQL Server实例上,在迁移完成后还需要针对Login账号,DBLink,AgentJOB,关键配置进行识别,并手动完成相关同步工作。

2、通过备份恢复迁移SQL Server数据库到异机环境。

Login账号及其密码迁移

Login账号即SQL Server的实例级账号,主要用于用户管理用户服务器权限与数据库权限。一个用户通常会有多个该类型账号,用户迁移到RDS for SQL Server实例后,需要手动将自己本地的Login账号同步在实例上进行创建,以下方法将介绍如何在本云RDS for SQL Server实例上创建同名,同密码的Login账号,并进行授权操作。

SQL Server 2012

  1. 通过以下脚本获取本地实例Login账号创建脚本,获取到的脚本可以直接在目标端上执行,以创建同名,同密码的Login账号。

  2. 将新建的Login账号跟用户当前RDS SQL Server实例上的迁移过来的数据库用户权限进行映射(mapping),以保证该账号在当前实例上的权限一致性,执行脚本如下。

    说明:

    以上脚本执行完成后,用户即可在自己的新实例上看到同名的登录账号,并且密码跟权限是完全跟本地一致的。

    SQL Server 2008

SQL Server 2000以下

若是SQL Server 2000版本,则可以使用如下脚本,如下:

删除登陆

DBLink连接

DBLink连接指SQL Server支持用户通过创建DBLink连接的方式,跟外部实例上的数据库进行交互,这种方式可以极大的方便用户不同实例间,不同数据库类型之间的数据库查询,同步,比较,所以大部分用户都会在本地实例上用到该服务,但是迁移上云后,本地DBLink是不会自动同步到云上实例的,还需要简单的手动进行同步。

  1. 通过微软提供的官方Microsoft SQL Server Management Studio客户端工具连接本地实例与云上实例,同时在“服务器对象 > 链接服务器”下找到当前实例的DBLink链接。

    图2 查看DBLink链接
    MSSQL手动迁移Login账号、DBLink、AgentJOB等信息

  2. 选中链接服务器,然后按F7,会自动弹出对象资源管理信息页,在该页面中可以方便你快速的自动创建脚本。

    本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

    图3 自动创建脚本
    MSSQL手动迁移Login账号、DBLink、AgentJOB等信息

  3. 在新窗口中,可以看到当前实例上所有DBLink的创建脚本,仅需复制该脚本到目标实例上,并修改@rmtpassword上的密码即可执行创建操作。

    说明:

    以上脚本为范例,创建的脚本可能包含大量系统默认配置项,但是每个DBLink仅需保留以下两个关键脚本即可执行成功,同时需要注意重新输入账号连接密码。

    SQL Server 2000可能会报错“有出现过:"消息 15429,级别 16,状态 1,过程 sp_addlinkedserver,第 42 行'(null)' 是无效的产品名称。

    解决:添加参数名为srvproduct,值的话随便填一个好记的就可以了。

Agent JOB

Agent JOB又名SQL Server代理服务,可以方便用户快速的在实例上创建定时任务,帮助用户进行日常运维和数据处理工作,用户在本地的JOB需要手动进行脚本迁移。

  1. 通过微软提供的官方Microsoft SQL Server Management Studio客户端工具连接本地实例与云上实例,同时在“SQL Server代理 > 作业”下找到当前实例上的所有JOB任务。

    图4 查看作业
    MSSQL手动迁移Login账号、DBLink、AgentJOB等信息

  2. 选择SQL Server代理下的作业,然后按F7,可以在对象资源管理器中看到所有的作业(JOB),全部选中后创建脚本到新窗口。

    图5 创建脚本
    MSSQL手动迁移Login账号、DBLink、AgentJOB等信息

  3. 复制新窗口中的T-SQL创建脚本到新实例上,然后注意修改如下几个关键项,以保障你的创建成功。

    • 注意修改每个JOB上的Ower账号:

      例如:

    • 注意修改每个JOB上的实例名称:

      例如:

    说明:

    新建JOB的Owner账号十分重要,在RDS SQL Server上,仅有该JOB的Owner可以看到实例上自己的JOB,别的Login账号是看不到无法操作的,所以建议所有的JOB Owner尽量是同一个账号方便管理。

    如果报错:“不能将值 NULL 插入列 'owner_sid',表 'msdb.dbo.sysjobs';列不允许有 Null 值。INSERT 失败。”

    解决:将“@owner_login_name=N'SUNDAN1\administrator'”修改为“@owner_login_name=N'sa'”

关键配置

用户将数据库还原到RDS for SQL Server实例上之后,本地的一些重要配置项也需要进行同步确认,避免影响业务的正常使用。

  1. tempdb:临时数据库的文件配置需要进行同步。

    推荐配置为8个临时文件,注意路径一定要确保在D:\RDSDBDATA\Temp\

    通过在目标数据库端执行如下脚本添加临时数据库的文件配置:

    图6 检查临时文件
    MSSQL手动迁移Login账号、DBLink、AgentJOB等信息

  2. 数据库隔离级别:请确认原实例上数据库的隔离级别是否开启,并同步到RDS SQL Server实例,快照隔离参数有2个,分别是:

    • 读提交快照(Is Read Committed Snapshot On)
    • 允许快照隔离(Allow Snapshot Isolation)

    若原实例上数据库的隔离级别是开启的,您可以通过在目标数据库端执行如下脚本开启数据库的隔离级别:

  3. 实例最大并行度:实例最大并行度在RDS for SQL Server实例上默认设置为0,用户也可以根据自己本地原来的设置项进行同步设置,避免不同环境下业务场景出现异常。

    右击本地实例选择属性,在服务器属性弹出框中选择高级,然后在右侧找到最大并行度(max degree of parallelism)设置项,确认本地实例设置值,并同步在目标RDS for SQL Server实例管理的参数组中进行修改。

    图7 查看本地实例最大并行度值
    MSSQL手动迁移Login账号、DBLink、AgentJOB等信息

    登录本云实例控制台,在实例管理页,单击目标实例名称,进入基本信息页签,切换至“参数修改”,搜索最大并行度(max degree of parallelism)并进行修改。

    图8 修改目标RDS for SQL Server实例的最大并行度
    MSSQL手动迁移Login账号、DBLink、AgentJOB等信息

  4. 迁移上云的数据库恢复模式是否为完整(FULL)模式,如果不是需要进行修改。

    右击数据库选择属性,在弹出数据库属性框中选择选项,并在右侧确认该数据库恢复模式为完整(FULL),保证该数据库高可用和备份策略可执行。

    图9 检查数据库恢复模式
    MSSQL手动迁移Login账号、DBLink、AgentJOB等信息

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

18 − 5 =

 

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部