使用Data Migration Assistant v5.2迁移SQL Server至Azure SQL遇权限错误求助
解决DMA迁移Azure SQL时VIEW SERVER STATE权限被拒绝的问题
这个问题我之前帮好几个用户排查过,本质是Azure SQL的dbmanager角色权限范围有限——它主要负责数据库的创建、删除等库级操作,但Data Migration Assistant(DMA)在迁移过程中需要读取服务器级的状态信息(比如实例配置、性能指标等),而这需要VIEW SERVER STATE权限,dbmanager默认是没有这个权限的。
下面是具体的解决步骤:
步骤1:给目标账户授予VIEW SERVER STATE权限
你需要用Azure SQL的服务器管理员账户(或者其他拥有服务器级权限的账户)连接到master数据库,执行以下SQL语句:GRANT VIEW SERVER STATE TO [你的SQL身份验证账户名];注意:必须在master数据库中执行,因为这是服务器级别的权限,不是数据库级的。
步骤2:验证权限是否生效
切换到你的目标账户,执行以下查询确认权限已添加:SELECT HAS_PERMS_BY_NAME(null, 'SERVER', 'VIEW SERVER STATE');如果返回结果是
1,说明权限已经生效,可以重新启动DMA的迁移流程了。步骤3:迁移完成后回收权限(可选)
如果你担心权限过大,迁移完成后可以用服务器管理员账户收回这个权限:REVOKE VIEW SERVER STATE FROM [你的SQL身份验证账户名];收回后,账户依然保留dbmanager的库级管理权限,不影响日常操作。
另外补充一句:DMA的评估和迁移阶段对权限的要求略有不同,迁移阶段需要更多服务器级的信息读取权限,所以这个临时授权是必要的。
内容的提问来源于stack exchange,提问作者Dep
相关产品推荐
相关产品推荐

