sqlserver怎么查看用户名和密码(Server创建账号密码和SID一致的登录账号)
有时候需要在每台服务器上创建账号密码一致的登录账号(SID一致),可以创建登录名的时候指定密码的哈希值和SID。例如我们搭建Always ON的时候每台服务器的账号需要SID一致。
1.查看对应登录名的sid值和密码的哈希值。(该账号必须是在某台服务器上已经存在)
SELECT name,sid,password_hash FROM sys.sql_logins
密码的哈希值也可以通过LOGINPROPERTY函数获得。
SELECT LOGINPROPERTY('wangshaibing','PasswordHash')
https://msdn.microsoft.com/zh-cn/library/ms345412.aspx
2.创建登录账号。
CREATE LOGIN wangshaibing WITH PASSWORD=0x0200E54F7B3233FCF59CCB93929AA7A2D1CB5DF3EF05BD688675D75F703B56FFCBA496C7F21DEC9DB325C2F0AD0E1C3C044027B6C404103DAC785AE8B3C689B2CF838C48C1E9 HASHED ,
SID=0xC9C360D6FB75F24CA628DFA0761E11D5,DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF,CHECK_POLICY=ON
https://msdn.microsoft.com/zh-cn/library/ms189751.aspx
3.或者直接用下面脚本
SELECT 'CREATE LOGIN [' p.name '] '
CASE WHEN p.type IN ( 'U', 'G' ) THEN 'FROM windows '
ELSE ''
END 'WITH ' CASE WHEN p.type = 'S'
THEN 'password = '
master.sys.fn_varbintohexstr(l.password_hash)
' hashed, ' 'sid = '
master.sys.fn_varbintohexstr(l.sid)
', check_expiration = '
CASE WHEN l.is_expiration_checked > 0
THEN 'ON, '
ELSE 'OFF, '
END 'check_policy = '
CASE WHEN l.is_policy_checked > 0
THEN 'ON, '
ELSE 'OFF, '
END
CASE WHEN l.credential_id > 0
THEN 'credential = ' c.name
', '
ELSE ''
END
ELSE ''
END 'default_database = '
p.default_database_name
CASE WHEN LEN(p.default_language_name) > 0
THEN ', default_language = ' p.default_language_name
ELSE ''
END
FROM sys.server_principals p
LEFT JOIN sys.sql_logins l ON p.principal_id = l.principal_id
LEFT JOIN sys.credentials c ON l.credential_id = c.credential_id
WHERE p.type IN ( 'S', 'U', 'G' )
AND p.name NOT IN ( 'sa' )
AND p.name NOT LIKE '%##%'
AND p.name NOT LIKE '%NT SERVICE%'
AND p.name NOT LIKE '%NT AUTHORITY%';
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com