Я использую Visual Studio 2005 для написания сценария базы данных, чтобы я мог поместить ее в подрывную деятельность. У меня есть одна жалоба на то, что он помещает мой код хранимой процедуры в одну буквальную строку, как в примере. ниже.
/****** Object: StoredProcedure [dbo].[MyStoredProc] Script Date: 08/19/2010 16:40:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MyStoredProc]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N'
CREATE PROCEDURE [dbo].[MyStoredProc]
-- My T-SQL code here
END'
END
GO
Мне это не нравится, потому что тогда подсветка синтаксиса бесполезна. Можно ли каким-либо образом отключить это поведение, т.е. чтобы оно удалило часть
EXEC dbo.sp_executesql @statement = N'
?
Какова в первую очередь мотивация сделать это таким образом? Цитирование строк всегда было темой, которая была моей слепой точкой, поэтому я уверен, что не осознаю всех последствий. Я мог бы с большей симпатией относиться к такому поведению, если бы понял, для чего оно нужно.
Спасибо
SQL Server Management studio выдает скрипты как Execute SQL, если выбрать опцию
Include If Not Exists
Если снять галочку, скрипт генерируется так, как вы ищете.