SQL Server 2008のスクリプトすべてのストアドプロシージャをして
目標CREATE: DBに既に存在するストアドプロシージャを作成するためのスクリプトを生成するには。ファイルごとに1つのスクリプトでなければなりません。
私は単にデータベースと 'タスク>スクリプトを生成'を右クリックすることができますが、それは私が望むテンプレートのsprocをスクリプトしないことがわかります。
オブジェクトエクスプローラから「sproc」を右クリックし、「スクリプトストアドプロシージャ> DROPおよびCREATE」をクリックすると、同じテンプレートでスクリプトを作成する必要があります。
それはあなたが「スクリプトの生成>タスク」を介して、この同様のバージョンを取得本当だが、主な違いは「タスク]> [スクリプトの生成」メソッドを使用すると、IF
の内部に巣CREATE PROCEDURE
ことができないためdbo.sp_executesql
コマンドを使用してスクリプトを作成します生成>
タスクをブロックすることは、この生成します。
USE someDB
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'somesproc') AND type in (N'P', N'PC'))
DROP PROCEDURE someSproc
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'someSproc') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'-- =============================================
CREATE PROCEDURE
AS
BEGIN
END
'
END
GO
をしかし、私はこの(右SPROCをクリックしてから見られるような)が必要です。
USE someDB
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'someSproc') AND type in (N'P', N'PC'))
DROP PROCEDURE someSproc
GO
USE someDB
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE someSproc
AS
BEGIN
SET NOCOUNT ON;
END
GO
を
アイデア?
これはで解決されるだろうCREATE OR REPLACE - 投票/コメントしましたか?:-) http://connect.microsoft.com/SQLServer/feedback/details/127219/create-or-replace –
希望の出力に関するいくつかの質問。各ステートメントの間に 'someDB 'を使用する必要がありますか?私はアクセス許可と依存関係の順序を無視しても問題ないと思いますか? –
ただ一つの 'USE someDB'が必要です。そして、はい、その2つは無視することができます。 –