2011年1月19日水曜日

◆SQL Server PowerShellの環境を作る2

PowerShell: ◆SQL Server PowerShellの環境を作るではローカルのSQLServerに接続した。

SQLServerの管理となれば当然リモートからなのでリモート接続を試して見た。
のだが、これがうまくいかない・・・・。

MSの資料によるとSQLServer認証の場合は仮想ドライブを作ってそこに資格情報を結び付けろとある。

001
002

New-PSDrive mysql -PSProvider SqlServer `
-Root "SQLSERVER:\SQL\ServerName\Default" -Credential (Get-Credential)

ちなみにデフォルトインスタンスでもインスタンス名は省略できず、「Default」と指定する必要があるらしい。

ここで表示された資格情報ダイアログに、 sa/hoge とか入れてやれば良いはずなのだが、以下のようなエラーが出る。

警告: SQL Server サービスの情報を取得できませんでした。'ServerName' の WMI
への接続が次のエラーで失敗しました: アクセスが拒否されました。 (HRESULT
からの例外: 0x80070005 (E_ACCESSDENIED))

メッセージからするとWMIレベルでエラーになっているようだ。
確かに、自PCからサーバーへはWMIで接続はできない。(まぁ、普通そうでしょ)
WMIを使ってSqlServerに認証を投げるには2種類の認証を指定しなければダメっぽ。

いろいろ調べてみたがそんな方法はなさげ・・・。
やっと以下の情報にたどり着いた。
New-PSDrive with SQL Authentication internally is using Integrated Authentication | Microsoft Connect

ん~、結局バグかい・・・。
っていうか仕様自体が破綻していない?

試しにWMIでアクセス可能なPCに対して上記スクリプトを実行したところ接続に成功した。
とはいえ、そもそもWMIでアクセス可能だったらWindows認証で良いわけなんでほとんど意味が無い。

というわけでSQLServerプロバイダーは使う環境が限られてきそうだ。

なお、テストで他PCのExpressを使う場合はリモート接続を有効にする必要がある。
SQL Server 2008 Express にリモート接続

0 件のコメント:

コメントを投稿