微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用于比较 SQL 登录名的 Powershell 脚本

如何解决用于比较 SQL 登录名的 Powershell 脚本

我有一个存储在 sql 表中的 sql Server 列表,其中一些在 AG 中。我想比较主副本和辅助副本之间的 sql 登录。我只想知道AG副本的sql登录的SID或密码是否有差异。我正在寻找将输出存储在具有以下格式的数组/哈希表中:

AGPrimaryReplica 登录名 SID 密码 AGSecondaryReplica 登录名 SID密码

我尝试使用以下链接作为参考来构建脚本,但没有让它工作。

https://davegugg.wordpress.com/2018/06/23/comparing-sql-server-logins-on-mirror-servers/

这是我试过的。它没有出错,但没有按照我需要的格式返回正确的信息。不知道我哪里出错了。

$MirrorsqlLoginList = Invoke-sqlCmd -query "select name,sid,is_disabled,password_hash from sys.sql_logins
where name not like '%##%' and name <> 'sa'
order by name;" -Server "Server1" 
$PrincipalsqlLoginList = Invoke-sqlCmd -query "select name,password_hash from sys.sql_logins
where name not like '%##%' and name <> 'sa'
order by name;" -Server "Server2" 
$DifferentLogins = $PrincipalsqlLoginList | Where { $MirrorsqlLoginList.name -NotContains $_.name -and $MirrorsqlLoginList.sid -notlike $_.sid -or $MirrorsqlLoginList.password_hash -notlike $_.password_hash }

一个挑战是从表本身获取 AG 副本详细信息。为了测试,我只是使用静态服务器名称。但实际上,有多个副本和AG。如果有人能提供一个有用的例子,会有很大帮助。

如果您需要更多详细信息,请告诉我。谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。