web-dev-qa-db-ja.com

SQL Serverでストアドプロシージャをあるデータベースから別のデータベースに移動する

SQL Server 2008を使用していますが、ストアドプロシージャをあるデータベースから別のデータベースにコピーしたいと考えています。どうやって?

4
ala

DBの下のSPを右クリックし、[スクリプトストアドプロシージャ]> [作成先]> [ファイル]をクリックすると、SQLスクリプトファイルが作成され、他のデータベースでそのスクリプトが実行されます。

8
DanBig

Management Studioを使用してストアドプロシージャのスクリプトを生成し、スクリプトをファイルに保存して、他のSQL Serverで実行するだけです。

メモリからデータベースを右クリックし、[すべてのタスク]の下に[スクリプトの生成]などを配置します。これにより、選択したものを作成するためのTransact-SQLが生成されます。

JR

5
John Rennie

次に、ストアドプロシージャを返すためのクエリ(出力をテキストに設定)を示します。

SELECT ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE='PROCEDURE'
3
Ash Machine

@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を使用すると、完全な定義を取得できます。

同じデータベースのいくつかのテーブルにプロシージャ定義のバックアップのみを保存したい場合も機能します

1
bernd_k

SSMSには、ユーザーのアクセス許可も生成するオプションがあります。これは便利です。

ツール>オプション>スクリプト

オブジェクトエクスプローラーペインで[ストアドプロシージャ]をクリックし、[オブジェクトエクスプローラーの詳細]ウィンドウでプロシージャを複数選択して、複数のスクリプトを作成することもできます。選択した手順を右クリックすると、準備が整います。

私はredgateのSQL Compareを好みます。

1
Sam

Stored Prceduresを含むすべてのデータベースをコピーできます。これが必要な場合があります。

Ms SQL Server Managment studioへ->ソースデータベースを右クリックし、[タスク]メニューに移動して[データベースのコピー]を選択します。

これにより、ソースを含むテーブル、データ、ストアドプロシージャの完全なコピーが作成されます。

1
AlxBGlez

上記の答えはすべて良好であり、機能します。問題は(とにかく私の世界では):sprocはどこにありますか?

私の場合、app db(ビジネスロジックなど)にsprocのキットが1つあり、マスターにシステム管理sprocの別のセットがあります。

私にとってキッカーは、マスターのsprocを移動(および同期)しなければならないことです。