SQL Server 2008を使用していますが、ストアドプロシージャをあるデータベースから別のデータベースにコピーしたいと考えています。どうやって?
DBの下のSPを右クリックし、[スクリプトストアドプロシージャ]> [作成先]> [ファイル]をクリックすると、SQLスクリプトファイルが作成され、他のデータベースでそのスクリプトが実行されます。
Management Studioを使用してストアドプロシージャのスクリプトを生成し、スクリプトをファイルに保存して、他のSQL Serverで実行するだけです。
メモリからデータベースを右クリックし、[すべてのタスク]の下に[スクリプトの生成]などを配置します。これにより、選択したものを作成するためのTransact-SQLが生成されます。
JR
次に、ストアドプロシージャを返すためのクエリ(出力をテキストに設定)を示します。
SELECT ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE='PROCEDURE'
@Ash Machineには良いアイデアがありますが、彼は誤ったクエリを使用し、返される結果をnvarchar(4000)に制限しています。
代わりに使用
Select definition from sys.sql_modules where object_id = object_id('<procname>')
完全な切り捨てられていない定義を取得します。
テキストへの出力を使用して最大文字数プロ列を8192に設定すると、ほとんどの実際的なケースでこれはSSMSなどのGUIで機能します。一部の行が8192より広い場合、これは失敗します。ただし、これはクエリツールの制限であり、クエリの制限ではないことに注意してください。この制限により、SQLServer 2012にも採用されました。
SQLPSX sqlise のように、おそらくPowerShellを介してADO.NETを使用すると、完全な定義を取得できます。
同じデータベースのいくつかのテーブルにプロシージャ定義のバックアップのみを保存したい場合も機能します
SSMSには、ユーザーのアクセス許可も生成するオプションがあります。これは便利です。
ツール>オプション>スクリプト
オブジェクトエクスプローラーペインで[ストアドプロシージャ]をクリックし、[オブジェクトエクスプローラーの詳細]ウィンドウでプロシージャを複数選択して、複数のスクリプトを作成することもできます。選択した手順を右クリックすると、準備が整います。
私はredgateのSQL Compareを好みます。
Stored Prceduresを含むすべてのデータベースをコピーできます。これが必要な場合があります。
Ms SQL Server Managment studioへ->ソースデータベースを右クリックし、[タスク]メニューに移動して[データベースのコピー]を選択します。
これにより、ソースを含むテーブル、データ、ストアドプロシージャの完全なコピーが作成されます。
上記の答えはすべて良好であり、機能します。問題は(とにかく私の世界では):sprocはどこにありますか?
私の場合、app db(ビジネスロジックなど)にsprocのキットが1つあり、マスターにシステム管理sprocの別のセットがあります。
私にとってキッカーは、マスターのsprocを移動(および同期)しなければならないことです。