最近、SQL Server 2012 SP3 の使用と、PowerShell スクリプトを使用した SQL Server 2012 の構築を開始しました。私たちの自動化プロセスには、データベース上で複数のデータベース スクリプトを実行するという要件があり、Invoke-Sqlcmd
この問題を発見するまでは非常に信頼できるものでした。
最近 SQL サーバーがインストールされたシステムで、PowerShell のデバッグ モードで適切なパラメーター セットを使用して実行するInvoke-sqlcmd
と、問題は発生しません。
PowershellCommand : Invoke-Sqlcmd -InputFile $sStrJBSPExecRolePath -ServerInstance $sStrSQLName -ErrorAction Stop
しかし、同じサーバーを再構築した後、PowerShell オートメーション スクリプトを使用して同じクエリを実行すると、以下のエラーが発生します。
「Invoke-Sqlcmd」という用語は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認してから再試行してください。
SQLPS のインポートなどを提案する多くのオンライン調査を行ったので、テストのためにスクリプトに以下のコマンドを追加しました。
get-pssnapin -Registered
Import-Module “sqlps” -DisableNameChecking**
上記をスクリプトに追加した後でも、同じエラーが発生します。しかし、同じスクリプトを手動で実行すると、まったく問題なく実行されます。何が悪いのかわかりません。
PowerShell オートメーション スクリプト - このスクリプトは、.Net Framework 3.5、SQL Server 2012、SQL Server 2012 SP3 をインストールし、SQL の最大メモリ制限などの SQL 設定を変更するために使用する SMO アセンブリを読み込みます。