eIT.com.cn 2022/11/26 23:24:37 阅读 46 次
INTRODUCTION本文介绍如何不同服务器上的 Microsoft Server 2005 实例之间传输和密码。 本文, 服务器 A 和服务器 B 是不同的服务器。 此外, 服务器 A 和 B 服务器都运行 Server 2005。 对于 MyUser ' ' 失败。 (MicrosoftServer、 18456:) 发生此问题是因为没有您做从服务器 A 上的 Server 实例传输和密码到服务器 B 上的 Server 实例 1.在服务器 A, 启动 ServerManagementStu, 并然后连接到 Server 从中移动的实例。 2.打开新编辑器窗口, 然后运行以下脚本。 USE masterGOIF OBJECT_ID ('sp_hexadecimal') IS NOT NULLDROP PROCEDURE sp_hexadecimalGOCREATE PROCEDURE sp_hexadecimal@binvalue varbinary(256),@hexvalue varchar (514) OUTPUTASDECLARE @charvalue varchar (514)DECLARE @i intDECLARE @length intDECLARE @hexstring char(16)SELECT @charvalue = '0x'SELECT @i = 1SELECT @length = DATALENGTH (@binvalue)SELECT @hexstring = '0123456789ABCDEF'WHILE (@i <= @length)BEGINDECLARE @tempint intDECLARE @ftint intDECLARE @secondint intSELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))SELECT @ftint = FLOOR(@tempint/16)SELECT @secondint = @tempint - (@ftint*16)SELECT @charvalue = @charvalue +SUBSTRING(@hexstring, @ftint+1, 1) +SUBSTRING(@hexstring, @secondint+1, 1)SELECT @i = @i + 1ENDSELECT @hexvalue = @charvalueGOIF OBJECT_ID ('sp_help_revlogin') IS NOT NULLDROP PROCEDURE sp_help_revloginGOCREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL ASDECLARE @name sysnameDECLARE @type varchar (1)DECLARE @hasaccess intDECLARE @denylogin intDECLARE @is_abled intDECLARE @PWD_varbinary varbinary (256)DECLARE @PWD_string varchar (514)DECLARE @SID_varbinary varbinary (85)DECLARE @SID_string varchar (514)DECLARE @tmpstr varchar (1024)DECLARE @is_policy_checked varchar (3)DECLARE @is_expiration_checked varchar (3)DECLARE @defaultdb sysnameIF (@login_name IS NULL)DECLARE login_curs CURSOR FORSELECT p.sid, p.name, p.type, p.is_abled, p.default_database_name, l.hasaccess, l.denylogin FROMsys.server_principals p LEFT JOIN sys.syslogins lON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'ELSEDECLARE login_curs CURSOR FORSELECT p.sid, p.name, p.type, p.is_abled, p.default_database_name, l.hasaccess, l.denylogin FROMsys.server_principals p LEFT JOIN sys.syslogins lON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_nameOPEN login_cursFETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_abled, @defaultdb, @hasaccess, @denyloginIF (@@fetch_status = -1)BEGINPRINT 'No login(s) found.'CLOSE login_cursDEALLOCATE login_cursRETURN -1ENDSET @tmpstr = '/* sp_help_revlogin script 'PRINT @tmpstrSET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'PRINT @tmpstrPRINT ''WHILE (@@fetch_status <> -1)BEGINIF (@@fetch_status <> -2)BEGINPRINT ''SET @tmpstr = '-- Login: ' + @namePRINT @tmpstrIF (@type IN ( 'G', 'U'))BEGIN -- NT authenticated account/groupSET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']'ENDELSE BEGIN -- Server authentication-- obtain password and sidSET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256) )EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUTEXEC sp_hexadecimal @SID_varbinary,@SID_string OUT-- obtain password policy stateSELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys._logins WHERE name = @nameSELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys._logins WHERE name = @nameSET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']'IF ( @is_policy_checked IS NOT NULL )BEGINSET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checkedENDIF ( @is_expiration_checked IS NOT NULL )BEGINSET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checkedENDENDIF (@denylogin = 1)BEGIN -- login is denied accessSET @tmpstr = @tmpstr + '; DENY CONNECT TO ' + QUOTENAME( @name )ENDELSE IF (@hasaccess = 0)BEGIN -- login exists but does not have accessSET @tmpstr = @tmpstr + '; REVOKE CONNECT TO ' + QUOTENAME( @name )ENDIF (@is_abled = 1)BEGIN -- login is abledSET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' ABLE'ENDPRINT @tmpstrENDFETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_abled, @defaultdb, @hasaccess, @denyloginENDCLOSE login_cursDEALLOCATE login_cursRETURN 0GO
3.运行下列语句。 EXEC sp_help_revlogin
4.在服务器 B, 启动 ServerManagementStu, 并再连接到的移动到 Server 实例。 5.打开新编辑器窗口, 并运行步骤 3 中脚本。 批注对实例 B: 服务器上运行该脚本之前检查下列信息 •仔细查看脚本。 如果服务器 A 和 B 服务器位于不同域, 您需要脚本。 然后, 您需要用新域名 LOGIN CREATETABLE 语句中替换原始域。 集成授予新域中访问原域中没有相同 SID 作为。 因此, 是从这些中孤立出去。 有关如何这些孤立, 请单击下列编号以查看 Microsoft 知识库中相应: (http://support.microsoft.com/kb/240872/) 如何运行 Server 的服务器之间移动时权限问题 如果服务器 A 和 B 服务器位于同一域, 使用相同的 SID。 因此, 是不容易被孤立。 •由使用加密密码, 脚本中创建。 这是因为存在 LOGIN CREATETABLE 语句中 HASHED 参数。 该参数指定散, 是已经列是 PASSWORD 参数后输入该密码。 •通过认, 可只是 sysadmin 固定服务器角色成员从 sys.server_principals 视图运行 SELECT 语句。 无法创建或运行脚本除非属于 sysadmin 固定服务器角色授予对, 必要权限。 •本文中步骤执行不传输用于特定认信息。 这是因为认服务器 B 上可能不总是存在 由名和认中传递作为参数来定义认为, 使用 ALTERDATABASE LOGIN 语句。 •服务器 A 的排序顺序可能区分大小写, 并且可能区分大小写排序次序的服务器 B。 此例, 必须键入作为大写字母传送后密码和密码以服务器 B 上实例中所有字母 •原始密码包含没有字母。 •所有原始密码中字母是大写。 服务器 A 和服务器 B 的排序顺序可能区分大小写, 或者可能是区分大小写排序次序的服务器 A 和服务器 B。 不会些情况下, 遇到问题。 •服务器 B 上实例已经处于可能有, 等同于脚本中。 种情况下, B: 服务器上实例上运行脚本时收到以下信息 msg 15, 级别 16, 1, 状态行 1 同样, 服务器 B 上实例已经处于可能与 SID 脚本中一样, SID。 种情况下, B: 服务器上实例上运行脚本时收到以下信息 msg 15433, 级别 16, 1, 状态行 1 因此, 必须执行以下操作: 1.仔细查看脚本。 2.检查该实例中的服务器 B 上 sys.server_principals 视图 3.相应地这些消息。 •在 Server 2005, 用于 SID 用于作为基础实现级访问。 服务器上两个不同中可能有两个不同的 SID。 此例, 只能访问具有 SID 匹配 SID sys.server_principals 视图中。 如果是从两个不同服务器合并两个可能会发生此问题。 要此问题, 通过 DROPUSER 语句具有 SID 匹配中手动。 再次通过 CREATE USER 语句然后, 。 from: 总结以上是为你收集整理的全部内容。 如果觉得网站内容还不错,欢迎将推荐给好友。 |
• 如何在运行 SQL Server 的计算机之间移动数据库 (2022/11/26 23:24:39)
• IDENTITY列的检查指定表的当前标识值 (2022/11/26 23:24:39)
• SQL Server 字符串函数速查 (2022/11/26 23:24:39)
• 微软发SQL Server 2008第二个CTP预览版,微软新版开发工具VS 2008 beta2功能定案 (2022/11/26 23:24:39)
• SQL Server PRB:联机丛书中的“孤立用户疑难解答”主题不完整 (2022/11/26 23:24:39)
• SQL Server Error: No Process is on the Other End of the Pipe (2022/11/26 23:24:38)
• SQL Sever 问题集锦 (2022/11/26 23:24:38)
• SQL Server 2005 的各种版本所支持的功能 (2022/11/26 23:24:38)
• SQL Server, 对于指定的缓冲区大小而言,源列的数据太大 (2022/11/26 23:24:38)
• SQL Server 清空或删除所有数据库表中的数据 (2022/11/26 23:24:37)
IMail Server | 防火墙技术专题 | Debian | TestNG | OSPF协议 | DAX函数 | Angular 4 | SAP C4C | Cisco 路由配置 | 漏洞补丁 | matlab | qTest | EasyMock | Apache Kafka | 手机QQ | Vista优化 | Oracle 体系架构 | 综合布线 | 网吧游戏服务器 | 面向对象的Python
合作媒体与友情链接 |
生活常识小贴士 | 软件开发教程 | 智慧城市生活网 | 息县通生活服务[移动版] | 息县商圈[移动版] | 美食菜谱 |
健康养生 | 法律知识 | 科技频道 | 电影影讯 | 留学考研学习 | 星座生肖|解梦说梦 |
关于我们 | 联系我们 | 合作媒体 | 使用条款 | 隐私权声明 | 版权声明 |
Copyright © 2023 eIT.com.cn. All Rights Reserved. | 豫ICP备2022012332号 |