Параметры SET хранимой процедуры SQL Server - PullRequest
3 голосов
/ 11 марта 2011

Какие параметры SET лучше всего использовать перед созданием хранимой процедуры?

, например

SET QUOTED_IDENTIFIER  OFF
SET ANSI_NULLS  ON 

CREATE PROCEDURE HelloWorld
AS
    --also, should any be issued within the procedure body?
    PRINT 'hello world!'
    RETURN 0
GO

Под лучшими я подразумеваю наиболее предпочтительные параметры.

Ответы [ 3 ]

5 голосов
/ 11 марта 2011

Для специально для создания хранимой процедуры , тогда важны только две в время разбора

SET ANSI_NULLS
SET QUOTED_IDENTIFIER

И они должны быть ON для работы с более новыми функциями SQL Server, которые работают только при включенном

Хранимые процедуры выполняются с настройками SET, указанными во время выполнения, за исключением SET ANSI_NULLS и SET QUOTED_IDENTIFIER. Хранимые процедуры, указывающие SET ANSI_NULLS или SET QUOTED_IDENTIFIER, используют настройку, указанную во время создания хранимой процедуры. Если используется внутри хранимой процедуры, любая настройка SET игнорируется.

Ссылка: http://msdn.microsoft.com/en-us/library/ms190356.aspx

Чтобы настроить одновременно и другие, используйте

SET ANSI_DEFAULTS ON

Если этот параметр включен (ВКЛ), он включает следующие параметры ISO:

SET ANSI_NULLS
SET CURSOR_CLOSE_ON_COMMIT
SET ANSI_NULL_DFLT_ON
SET IMPLICIT_TRANSACTIONS
SET ANSI_PADDING
SET QUOTED_IDENTIFIER
SET ANSI_WARNINGS

Для полноты установите остальные три на уровне соединения, который позволяет правильно работать таким вещам, как INDEXED VIEWs

SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET NUMERIC_ROUNDABORT OFF
1 голос
/ 11 марта 2011

Уровень изоляции транзакции (часто Чтение зафиксировано - чтобы не допустить грязного чтения).И если вы не заинтересованы в количестве затронутых строк;установить nocount на

0 голосов
/ 11 марта 2011

Я, как правило, не беспокоюсь о настройке до начала процесса. В процедуре нетипично использовать SET NOCOUNT ON, а если это просто выбрать SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...