sql-server - 用于比较 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, sid, is_disabled, 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。如果有人可以提供一个很有帮助的工作示例。
如果您需要更多详细信息,请告诉我。谢谢!
解决方案
推荐阅读
- python - 将 Python 的默认数字表示设置为“十进制”
- python - 在 Python 中计算大列表标准差的更有效方法
- static - 对于计算一次然后可以在应用程序的任何地方使用的不可变对象,最合适的模式是什么?
- django - 从 PayPal Express Checkout 客户端 REST API 将变量返回到 Web 服务器
- xmpp - ejabberd.yml 为 strophe 配置注册一个新用户
- html - 文本对某些 div 的不透明度为零,但对其他 div 不透明度为零
- laravel - 基于项目创建 laravel 护照令牌
- c# - 错误 ITMS-90685:CFBundleIdentifier 冲突。CFBundleIdentifier 值为“xamarin.ios.xamarin-framework”的捆绑包不止一个
- android - 我的 NDK 项目无法编译,出现与 CPU 架构相关的问题
- java - 获取完整的项目路径java