2012-01-04 12 views
2

は次のPowerShellスクリプトが正常にMicrosoft.SqlServer.SMOを使用して変更ストアドプロシージャのSQLスクリプトを作成しますか?

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | out-null 
$srv = new-object Microsoft.SqlServer.Management.Smo.Server("<SERVER>") 
$db = $srv.Databases.Item("<Database>") 
$proc = $db.StoredProcedures.Item("<StoredProcedure>") 
$proc.Script() > testScript.sql 

は、同様のアプローチ、すなわちスクリプト作成オプションを変更することを利用して「アルター」を作成するために、とにかくあり、「作成」ストアドプロシージャのスクリプトを生成しているようですか? SQL Server 2005環境を参照しています。

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | out-null 
$srv = new-object Microsoft.SqlServer.Management.Smo.Server("<SERVER>") 
$db = $srv.Databases.Item("<DATABASE>") 
$proc = $db.StoredProcedures | ?{ $_.Name -eq "<STORED PROC>"} 
$retval = $proc.ScriptHeader($true) + $proc.TextBody 
$retval > testScript.sql 

注:

+1

[SMO(サーバー管理オブジェクト)を使用してCREATEスクリプトの代わりにALTERスクリプトを作成する方法] http://stackoverflow.com/questions/3159901/how-to-create-alter-scripts-instead-of-create-scripts-using-smo-server-manageme) – msarchet

+0

質問を複写するのに同意します。私は、Red Gate SQLCompareのようなサードパーティのツールを追加して、コマンドラインインターフェイスを持っています。 –

答えて

2

次のPowershellスクリプトは私のために働くようだ...私はいつも「ALTER PROC」と「PROCの作成」を交換するステートメントを追加することができるが、これは洗練ようです次のコマンドをtrueにすると、変更ヘッダーが作成されます。

$proc.ScriptHeader($true) 
+0

同じように関数を変更したいと思います。 "null値の式でメソッドを呼び出すことはできません"と言ってもエラーが出ますが、$ retvalを参照しているようです。提案? また、testScript.sqlファイルは、これを変更したいファイル(つまり、alter script)です。おかげさまで – niklasolsn

関連する問題