2016-06-28 10 views
1

Invoke-Sqlcmdを使用して簡単なSQLクエリを実行するPowerShellスクリプト(test.ps1)があります。このスクリプトは、リモートのファイル共有サーバー上に存在します。スクリプトは以下のとおりです。TidalからPowerShellスクリプトでInvoke-Sqlcmdを実行する方法

param 
(
[string]$SQL_username, 
[string]$SQL_password 
) 

Write-Host ('begin script') 
$db = 'some_DB' 
$server = 'some_IP' 
$query = 'SELECT TOP 10 * FROM some_schema.some_table' 
Invoke-Sqlcmd -Username $SQL_username -Password $SQL_password -ServerInstance $server -Database $db -Query $query -QueryTimeout 60000 
Write-Host ('end script') 

私はTidalユーザーアカウントを持つファイル共有サーバーとリモートで、スクリプトを正常に実行します。

私は、このtest.ps1スクリプトを実行する対応するタイダルジョブを持っています。ここでは潮汐ジョブ情報は次のとおりです。

コマンド

C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe 

コマンドパラメータ

-ExecutionPolicy bypass -File D:\some_path\test.ps1 
-SQL_username "<SQL_username.1>" 
-SQL_password "<SQL_password.2>" 

私は潮汐を経由してスクリプトを実行すると、潮のOutput画面を示しています

開始スクリプト

Invoke-Sqlc MD:用語「起動-sqlcmdの」は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前 として認識されていません...

終了スクリプト

だから、それはその何でも、ユーザは明らかですTidalを使用してスクリプトを実行すると、ユーザーはWrite-Hostコマンドレットを認識しますが、Invoke-Sqlcmdコマンドレットは認識されません。どうすればいいの?そして、どうすればこの問題を解決できますか? (私は、Tidalユーザーが、リモートサーバーにログインした同じ潮汐ユーザーであるジョブの実行タブに指定されている実行時ユーザーではなく、NT AUTHORITY \ SYSTEMであることを確認しました)

+0

SQLモジュールがSYSTEMのPowerShellプロファイルに読み込まれていません。 http://www.jasonq.com/blog/2012/3-things-to-do-if-invoke-sqlcmd-is-not-recognized-in-windows-powershellを参照してください。 SYSTEMとして実行しているときにネットワークにアクセスできないと思うので、タスクをユーザアカウントで実行するように設定する必要があるかもしれません。 –

+0

あなたは正しいと思います。別のユーザーアカウントを使用してNew-PSSessionを使用して新しいPowerShellセッションを作成しました。これは機能します。 – user3100444

答えて

1

SQLモジュールはSYSTEMのPowerShellプロファイルに読み込まれません。あなたはどのinvoke-sqlcmd文の前に、次のような何かを実行する必要があります:として実行している場合、ネットワークにアクセスすることができなくなりますよう

# For SQL 2008 
Add-PSSnapin SqlServerCmdletSnapin100 
Add-PSSnapin SqlServerProviderSnapin100 

# For SQL 2012 
Import-Module SqlPs 

また、ユーザーアカウントで実行するタスクを設定する必要があるかもしれませんシステム。

+0

'Import-Module SQLPS;'は、現在の作業ディレクトリをSQL Serverプロバイダの 'SQLSERVER:\'に変更することに注意してください。また、Import-Module SQLPS -DisableNameCheckingを指定しない限り、SQL Server開発者が非標準動詞を選択したため、Import-Moduleは警告を出力します。これらはどちらもSQL Server 2016で修正されていますが、私は自分自身をチェックしていません。 –

関連する問題