SQL Server ANSI_Padding

Если я щелкну правой кнопкой мыши по таблице в SQL Server Management Studio и выберу «Таблица сценариев как> Создать» to> New Query Editor Window ', который появляется в коде:

SET ANSI_PADDING ON

.... создать таблицу ...

SET ANSI_PADDING OFF

Итак, я думаю, включение или выключение ANSI_Padding влияет на всю базу данных, и она включена для создания таблицу, а затем снова ее выключили?

Что произойдет, если вы создадите таблицу с отключенным ANSI_Padding? Как вы можете включить его для этой таблицы?

17
задан Mike Wilson 25 August 2010 в 14:33
поделиться

2 ответа

Полагаю, включение или выключение ANSI_Padding влияет на всю базу данных и включается для создания таблицы, а затем снова выключается?

нет, SET опция влияет только на контекст вашего соединения, если приходят 2 соединения, и у одного ANSI_PADDING OFF, а у другого ON, они не влияют на другое соединение. Однако.... таблица, созданная в одном соединении, будет вести себя так же, как настройка.

Подробнее читайте здесь http://msdn.microsoft.com/en-us/library/ms190356.aspx

Итак, если соединение 1 приходит с выключенным параметром ansi_nulls затем выберите * из bla, где col = null будет работать

это, однако, не будет работать для соединения 2, если оно поставляется с настройкой ansi_nulls по умолчанию (ON)

вы можете видеть, что вы устанавливаете либо путем выполнения dbcc useroptions, либо, если вы используете версию 2005 и выше

SELECT SPID,VALUE,ANSI_SETTING
FROM (
SELECT @@SPID AS SPID,
CASE quoted_identifier
WHEN 1 THEN 'SET' ELSE 'OFF' END QUOTED_IDENTIFIER,
CASE arithabort
WHEN 1 THEN 'SET' ELSE 'OFF' END ARITHABORT,
CASE ansi_null_dflt_on
WHEN 1 THEN 'SET' ELSE 'OFF' END ANSI_NULL_DFLT_ON,
CASE ansi_defaults
WHEN 1 THEN 'SET' ELSE 'OFF' END ANSI_DEFAULTS ,
CASE ansi_warnings
WHEN 1 THEN 'SET' ELSE 'OFF' END ANSI_WARNINGS,
CASE ansi_padding
WHEN 1 THEN 'SET' ELSE 'OFF' END ANSI_PADDING,
CASE ansi_nulls
WHEN 1 THEN 'SET' ELSE 'OFF' END ANSI_NULLS,
CASE concat_null_yields_null
WHEN 1 THEN 'SET' ELSE 'OFF' END CONCAT_NULL_YIELDS_NULL
FROM sys.dm_exec_sessions
WHERE session_id = @@SPID ) P
UNPIVOT (VALUE FOR ANSI_SETTING IN(
QUOTED_IDENTIFIER,ARITHABORT,ANSI_NULL_DFLT_ON,
ANSI_DEFAULTS,ANSI_WARNINGS,
ANSI_PADDING,ANSI_NULLS,CONCAT_NULL_YIELDS_NULL
)
) AS unpvt
6
ответ дан 30 November 2019 в 13:45
поделиться

SET ANSI_PADDING Контролирует путь столбец хранит значения короче, чем заданный размер столбца и способ, которым столбец хранит значения, которые иметь конечные пробелы в char, varchar, binary и varbinary данные.

В будущей версии MicrosoftSQL Server ANSI_PADDING будет всегда быть включенным и любые приложения, которые явно установить для параметра значение OFF, выдать ошибку. Избегайте использования этого функция в новой разработке, и планировать модифицировать приложения, которые в настоящее время использовать эту функцию.

Эта настройка влияет только на определение новых столбцов. После создания столбца SQL Server сохраняет значения на основе параметра, установленного при создании столбца. Последнее изменение этой настройки не повлияет на существующие столбцы.

14
ответ дан 30 November 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: