我对 PowerShell 还是很陌生,所以我不确定我可以采取哪些故障排除步骤来解决这个问题。我想使用下面的命令来确定副本是否是主副本。
我相信我已经成功加载了提供者和 smo。Intellisense 似乎可以识别该命令。
如果我运行以下命令
Test-SqlAvailabilityReplica
该脚本将运行但永远不会完成。我在其中一个副本上运行它,所以我假设它应该只是抓住本地主机。如果我添加 -WhatIf 标志,它仍然会在没有完成的情况下运行。
我也试过 Test-SqlAvailabilityGroup 但它也从未完成。
我该怎么做才能使此命令起作用?我如何找出导致它锁定的原因?
编辑:看起来我的问题出在路径上......这个路径位置有效
SQLSERVER:\Sql\FooHostname\FooInstance\AvailabilityGroups\FooAg\AvailabilityReplicas\
但后来我尝试使用这个路径位置但它失败了。
SQLSERVER:\Sql\FooHostname\FooInstance\AvailabilityGroups\FooAg\AvailabilityReplicas\MainReplica
编辑2:
我们确定它是
<ServerName>
在最后?我可以将我的位置设置为
SQLSERVER:\Sql\FooHostname\FooInstance\AvailabiltyGroups\FooAg\AvailabilityReplicas\
正好。当我执行 DIR 以查看可用内容时,我看到我的两个副本列为
"FooNode1\FooInstance"
和
"FooNode2\FooInstance"
那么对于路径的“MainReplica”部分,我应该用 FooNode1 还是 FooNode1\FooInstance 替换它?
SQLPS 可用性组周围的命令要求您传入副本或服务器本身的提供程序路径(如果您正在构建 AG)。
如帮助文档中的示例所示:
如果您使用的是命名实例,请将“DEFAULT”更改为实例名称。
因此,经过一些测试后,我发现如果您正在处理命名实例,则副本名称是一种特殊情况。如果您正在处理命名实例,则不能只使用:“SQLSERVER:\Sql\MyServer\MyInstance\AvailabilityGroups\MyAG\AvailabilityReplicas\MyServer\MyInstance”
你会得到找不到路径的错误……这里是如何修复它的一个提示。
我碰巧对一个带有 AG 的命名实例发出了这个命令:
PSChildName 和其他对副本名称的引用显示反斜杠显示为ASCII 十六进制等效值“5C”。因此,要使用命名实例,您必须使用以下路径格式: