开发者社区> 技术小甜> 正文

SQL Server数据库实例间迁移Login

简介:
+关注继续查看

 

wKioL1jI3JKjgAOPAAB7W45BdYk167.png


1. 流行的方法:T-SQL


老式的方法是,准备好CREATE LOGIN脚本,填入账号和密码,保持SID一致,在新服务器实例上执行。

微软在KB918992KB246133也提供了2个存储过程来解决各种版本间Login迁移问题。不同版本使用不同的方案。


注意密码的哈希有以下两个版本:

  • VERSION_SHA1:使用SHA1算法产生的哈希,用于SQL Server 2000到SQL Server 2008 R2。

  • VERSION_SHA2:使用SHA2 512算法产生的哈希,用于SQL Server 2012到之后的版本。


对于SQL Server 2012及之后的版本,需要手工修改KB918992脚本中哈希变量长度:

  • 替换256为512

  • 替换514为1028

  • 替换1024为2048


示例语法:

1
2
3
EXEC dbo.sp_help_revlogin
--OR
EXEC dbo.sp_help_revlogin @login_name = 'BlogTester' -- sysname


示例输出:

1
2
3
4
/* sp_help_revlogin script
** Generated Aug 20 2012 8:24AM on V-DEV-DB-011\vb18 */
-- Login: BlogTester
CREATE LOGIN [BlogTester] WITH PASSWORD = 0x01000D1F43BB2A1F306EC90F5352291E8DD273549DB4AF950845 HASHED, SID = 0xD831296B0274D448A5748A52B8C796EA, DEFAULT_DATABASE = [master], CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF

 

2. 少用的方法:SSIS的Transfer Logins Task


SQL Server Data Tools提供了Transfer Logins Task任务,我们可以迁移所有Logins,一个Login,选择特定的Logins集合。我们也可以配置当Login存在的时候覆盖、跳过或抛出错误。详见Technet文章

clip_image002

 

3. 新潮的方法:Powershell的Copy-SqlLogin和Export-SqlLogin


Copy-SqlLogin和Export-SqlLogin并不是微软官方的SQL Server模块的cmdlet,因此,你先要安装dbatools模块:

http://dbatools.io/getting-started


然后执行Login导出:

1
Export-SqlLogin -SqlServer sql2005 -FileName C:\temp\sql2005-logins.sql


默认,Export-SqlLogin导出所有的Login,也也可以选择包含或排除的Login。

或者,你想从SQL Server 2000动态迁移Login到SQL Server 2016?

1
Copy-SqlLogin -Source sqlsvr2000 -Destination newsql2016


Copy-SqlLogin可以运行在SQL Server 2000到2016。


如果想同步可用性组的Login权限,怎么做呢?dbatools模块提供了Sync-SqlLoginPermissions cmdlet来做这个工作。不像Copy-SqlLogin,Sync-SqlLoginPermissions不添加新Login。它只是同步实例和数据库权限集合,以及实例和数据库角色和作业所有者。

1
Sync-SqlLoginPermissions -Source sql2005 -Destination sql2016


如果想拷贝可用性组的作业,怎么做呢?可以使用Copy-SqlJob

 

参考:

http://www.sqlhammer.com/how-to-transfer-logins-to-a-new-server/

http://dba.stackexchange.com/questions/63518/how-do-i-transfer-logins-from-2008r2-to-2014-with-passwords

https://blog.netnerds.net/2016/06/its-2016-why-is-sp_help_revlogin-a-thing/













本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1906767 ,如需转载请自行联系原作者



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
18127 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
23606 0
sqlserver 数据库 SQL循环语句
关键字: sqlserver 数据库 SQL循环语句 declare @i int set @i=1 while @i $50         BREAK      ELSE         CONTINUE END PRINT 'Too much for the market to bear' B. 在带有游标的过程中使用 WHILE 以下的 WHILE 结构是名为 count_all_rows 过程中的一部分。
794 0
数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接
前言 DataGrip:Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品)。DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, Oracle, PostgreSQL, Sybase, Sqlite, DB2, Azure等)的连接,管理等。
3561 0
SQL Server 数据库定时自动备份
原文:SQL Server 数据库定时自动备份 SQL Server 数据库定时自动备份——每天定时备份,保留前8天的备份 利用SQL Server代理新建作业来定期备份 1)在数据库库的【SQL Server代理】->【作业】,右键【新建作业】 2)在【常规】选项卡设置【名称】(自定义) ...
1116 0
SQL Server数据库多种方式查找重复记录
原文地址:http://kb.cnblogs.com/page/94862/ 摘要:SQL Server是一个关系数据库管理系统,SQL Server数据库的应用是很多的,SQL Server数据库赢得了广大用户的青睐,本文将主要为大家介绍关于SQL Server数据库中查找重复记录的方法。   SQL Server数据库多种方式查找重复记录:   示例:表stui
978 0
SQL SERVER数据库删除LOG文件和清空日志的方案
原文:SQL SERVER数据库删除LOG文件和清空日志的方案 数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间。SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作。
5056 0
+关注
10145
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载