怎样在 SQL Server 实例之间传输登录和密码
SET @tmpstr = 'SET @pwd = CONVERT (varchar(256), ' + @txtpwd + ')'
ELSE
SET @tmpstr = 'SET @pwd = CONVERT (varbinary(256), ' + @txtpwd + ')'
PRINT @tmpstr
EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name
+ ''', @pwd, @sid = ' + @SID_string + ', @encryptopt = '
END
ELSE BEGIN
-- Null password
EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name
+ ''', NULL, @sid = ' + @SID_string + ', @encryptopt = '
END
IF (@xstatus & 2048) = 2048
-- login upgraded from 6.5
SET @tmpstr = @tmpstr + '''skip_encryption_old'''
ELSE
SET @tmpstr = @tmpstr + '''skip_encryption'''
PRINT @tmpstr
END
END
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
END
CLOSE login_curs
DEALLOCATE login_curs
RETURN 0
GO
----- End Script -----
2. 在创立 sp_help_revlogin 存储历程之后,请从源服务器上的查询阐发器中运转 sp_help_revlogin 历程。sp_help_revlogin 存储历程可同时用于 SQL Server 7.0 和 SQL Server 2000。sp_help_revlogin 存储历程的输出是登录脚本,该脚本可创立带有原始 SID 和暗码的登录。保存输出,然后将其粘贴到目标 SQL Server 上的查询阐发器中,并运转它。比方:
EXEC master..sp_help_revlogin
备注
? 在目标 SQL Server 上运转输出脚本之前,请仔细查看此脚本。要是必需将登录传输到与 SQL Server 源实例不在同一个域中的 SQL Server 实例,请编辑由 sp_help_revlogin 历程生成的脚本,并在 sp_grantlogin 语句中将域名更换为新的域名。由于在新域中被付与拜访权的集成登录与原域中的登录具有差别的 SID,因而数据库用户将被从这些登录中伶仃出去。要办理这些伶仃用户,请拜见以下项目标记项中援用的文章。要是在同一个域中的 SQL Server 实例之间传输集成登录,则会使用雷同的 SID,并且用户不太可能被伶仃。
? 在移动登录之后,用户将不再具有拜访已被同时移动的数据库的权限。此问题称为"伶仃用户"。要是实验将拜访此数据库的权限付与该登录,则可能会失败,这表明该用户已存在:
Microsoft SQL-DMO (ODBC SQLState:42000) Error 15023:User or role '%s' already exists in the current database.
有关怎样将登录映射到数据库用户以办理伶仃的 SQL Server 登录和集成登录的说明,请拜见以下 Microsoft 知识库文章:
240872 HOW TO:在 SQL 服务器之间移动数据库时怎样办理权限问题
有关使用 sp_change_users_login 存储历程逐个办理伶仃用户(仅能办理从标准 SQL 登录中伶仃出去的用户)的说明,请拜见以下 Microsoft 知识库文章:
274188 PRB: "Troubleshooting Orphaned Users" Topic in Books Online is Incomplete
? 要是传输登录和暗码是向运转 SQL Server 的新服务器移动数据库的一部分,请拜见以下 Microsoft 知识库文章,以相识对所涉及的工作流程和步调的说明:
314546 HOW TO: Move Databases Between Computers That Are Running SQL Server
? 可以或许这样做的缘故原由在于:sp_addlogin 系统存储历程中的 @encryptopt 参数容许通过使用加密暗码来创立登录。有关此历程的更多信息,请拜见 SQL Server 联机图书中的"sp_addlogin (T-SQL)"主题。
? 默许环境下,只要 sysadminfixed 服务器角色的成员可以从 sysxlogins 表中举行选择。除非 sysadmin 角色的成员付与了须要的权限,不然终极用户将无法创立或运转这些存储历程。
? 此要领不会实验传输特定登录的默许数据库信息,由于默许数据库并不一直存在于目标服务器中。要为某个登录定义默许数据库,您可以使用 sp_defaultdb 系统存储历程,并将登录名和默许数据库作为参数通报给该历程。有关使用此历程的更多信息,请拜见 SQL Server 联机图书中的"sp_defaultdb"主题。
? 在 SQL Server 实例之间传输登录的历程中,要是源服务器的排序次序不区分大小写,而目标服务器的排序次序区分大小写,则在将登录传输到目标服务器后,必需在暗码中用大写情势输出全部字母字符。要是源服务器的排序次序区分大小写,而目标服务器的排序次序不区分大小写,则无法通过使用本文概述的历程传输的登录举行登录,除非原始暗码不包罗字母字符,或者原始暗码中的全部字母字符都是大写字符。要是两个服务器都区分大小写或者都不区分大小写,则不会出现此问题。这是 SQL Server 处置惩罚暗码的方式所带来的反作用。有关更多信息,请拜见 SQL Server 7.0 联机图书中的"Effect on Passwords of Changing Sort Orders"(变动排序次序对暗码的影响)主题。
? 当在服务器上运转 sp_help_revlogin 脚本的输出时,要是该服务器已经定义了一个登录,且该登录名与脚本输出中的某个登录的称号雷同,则在执行 sp_help_revlogin 脚本的输出时,可能会看到上面的错误信息:
Server:Msg 15025, Level 16, State 1, Procedure sp_addlogin, Line 56
The login 'test1' already exists.
同样,要是此服务器上存在其他登录,且其 SID 值与您要实验添加的登录雷同,则会收到以下错误信息:
Server:Msg 15433, Level 16, State 1, Procedure sp_addlogin, Line 93
Supplied parameter @sid is in use.
因而,您必需仔细查看这些下令的输出,检查 sysxlogins 表的内容,并相应地办理这些错误。
? 特定登录的 SID 值被用作在 SQL Server 中完成数据库级别拜访的底子。因而,要是同一登录在该数据库级别(在该服务器上的两个差别数据库中)有两个差别的 SID 值,则此登录将仅能拜访其 SID 与该登录的 syslogins 中的值相匹配的数据库。要是所讨论的两个数据库已从两个差别的服务器归并在一同,则可能出现这种情况。要办理此问题,需要使用 sp_dropuser 存储历程从具有不匹配 SID 的数据库中手动删除所讨论的登录,然后再使用 sp_adduser 存储历程添加它
- 文章作者: 福州军威计算机技术有限公司
军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。
TAG:
评论加载中...
|
上一篇: 捆绑执行文件新思维
下一篇: 对1433端口SA权限的再突破