SQLスキーマ作成スクリプトを手動で生成するときは、通常は「プロシージャの作成...」を呼び出しますが、タスク/スクリプトの生成オプションを使用してスクリプトを生成すると、 'spexecutesql @statement = ..'が使用されます。なぜSQL Serverは文字列を含むsp_executesql文を使用してストアドプロシージャを生成しますか?
EXEC dbo.sp_executesql @statement = N'-- =============================================
-- Author: Me
-- Create date: 20/03/2009
-- Description: Does stuff
-- =============================================
CREATE PROCEDURE [dbo].[MyProc]
-- Add the parameters for the stored procedure here
@StartDate datetime
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
...
END
'
なぜですか?コメントを残すことは何か? ありがとう
私はそれが本当であるかどうかはわかりません。私はしばしば "IF NOT EXISTS"型警備員を書いて、sp_executesqlを使ってスクリプトを実行しないでください。 –
私はかなりアプローチがアルターにはうまくいかず、ストアドプロシージャに関連して作成すると確信しています –