2017-05-09 13 views
0

SQL ServerストアドプロシージャからSQL Serverテーブル内に格納されたpowershellスクリプトを実行する方法はありますか?は、SQL Serverテーブルに格納されたpowershellスクリプトを実行します

+0

「SQL Serverのテーブルからpowershellスクリプトを実行できる方法です」と明記してください。「これはどういう意味ですか?また最後に、ストアドプロシージャ '' SQLストアドプロシージャから実行することは可能ですか? ''、あなたの質問は全く意味をなさないことに言及しました。 –

+0

SQLストアドプロシージャ内からpowershellを実行することはできません。ただし、SQLエージェントジョブから行うことができ、TSQLからそれらを作成して実行することができます。しかし、これは良い解決策ではありません。 –

+0

@MartinSmithは 'xp_cmdshell'でもありませんか? – alroc

答えて

2

sproc xp_cmdshellがあり、非常にハッキーなことをするために使用できます。これは、T-SQL内からコマンドラインステートメントを発行するためだけでなく、bcpと組み合わせて使用​​して、選択クエリの結果をファイルas described in this articleに保存することもできます。

だから、あなたが求めているのは理論的に可能です。 PowerShellスクリプトをファイルに保存するためのT-SQLステートメントを作成し、保存したばかりのファイルをxp_cmdshellで2回目に呼び出して実行することができます。 (注意:私はこれらのプロジェクトをそれぞれ2つのプロジェクトで成功裏に実行しましたが、2つを組み合わせたことはありません)。

実際にこれを行うかどうかは別の問題です。考慮すべき二つのことがあります。それは/維持デバッグが困難であるとして

  1. ほとんどの開発者は、ストアドプロシージャ内のロジック(確かにかなり複雑)厄介なハックをこのの使用を検討します。スクリプトが完了したかどうかを呼び出し元はどのように判断しますか?呼び出し元は、コマンドが正しく発行されたことをどのようにして追跡しますか?物事が壊れているとき、次の開発者はこれをどのように維持しますか?

  2. セキュリティ上の考慮事項もあります。明らかに、ファイルは保存され、xp_cmdshell呼び出しが十分な権限を持つユーザーによって発行された場合にのみ、そのスクリプトが実行されます。これらの権利を開くことは、潜在的にいくつかのセキュリティホールを開く可能性があります....そして、適切でない権利の問題を解決することは、同様に困難なことです。

+0

ええ、私はかなり古かったと思っていましたが、MS文書(リンクから)は「2008年に適用されます。おそらく、コマンド自体ではなく記事内のテキストです。私は私の応答を編集します。 –

+0

オンラインヘルプはこれまでに戻っていません。 SELECTで表示されるように、https://docs.microsoft.com/en-us/sql/t-sql/queries/select-transact-sql –

関連する問題