web-dev-qa-db-ja.com

PowershellをSQL Serverの名前付きインスタンスに接続する方法は?

私が走るとき

# Load the SMO Assembly 
[void][reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo"); 
$ServerName = "[local\s12]"; 

#Get a server object which corresponds to the **default** instance 
$srv = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Server $ServerName 

エラーが発生する

Failed to connect to server local\s12.
1
ob213

$ ServerName = "[local\s12]";

角かっこを削除します。

それとは別に、PowerShellコードは問題なく見えます(そして、私のテストマシンで動作します。使用したコードは、SQL ServerテストマシンSERVER1からコピーしたものです)。

PS C:\Users\Administrator.ADVENTURE-WORKS> [void][reflection.Assembly]::LoadWithPartialName("Microsoft.SQLServer.Smo" )
PS C:\Users\Administrator.ADVENTURE-WORKS> $ServerName = "server1\sql2012"
PS C:\Users\Administrator.ADVENTURE-WORKS> $ServerName
server1\sql2012
PS C:\Users\Administrator.ADVENTURE-WORKS> $Srv = New-Object -TypeName Microsoft.SQLServer.Management.Smo.Server $ServerName

さらに、サーバーは実際には「ローカル」と呼ばれますか、それとも匿名化されただけですか?ローカルサーバーに接続する場合、エイリアスはピリオドです。

$ServerName = ".\SQL2012"

それ以外の場合は、Powershellスクリプトを実行しているのと同じマシンからWindows認証を使用してSQL Server Management Studioを使用し、サーバーlocal\s12に接続してみてください。それが失敗した場合、接続の問題があります。ファイアウォールをチェックします(SQL Serverマシン上、およびクライアントとサーバー間のルーター上)。 TCP/IPネットワークライブラリがクライアントとサーバーの両方で有効になっていることを確認します。 TLSが有効になっている場合は、証明書がすべて正しいことを確認します。

2