MS SQL Server Management Studio 2005 の場合:
Tools|Options|Scripting|"Include IF NOT EXISTS clause" を true に設定している場合、ストアド プロシージャを変更すると、機能しない奇妙なスクリプトが作成されます。次のようになります: (簡潔にするために省略記号を使用)
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS [...]
BEGIN
EXEC dbo.sp_executesql @statement = N'
ALTER procedure [dbo].[p_Procedure]
[...]
'
END
ALTER ステートメントが呼び出される唯一の方法は、ストアド プロシージャが存在しない場合であるため、これは明らかに機能しません。
したがって、問題は次のとおりです。この生成されたコードを変更する方法はありますか? テンプレートはどこかにありますか (これはテンプレート ツールでのビルドとは関係ないようです)。
(この動作の簡単な説明: CREATE ステートメントのスクリプトを作成すると、IF NOT EXISTS がより意味のある同じコードが生成されます)