Системные базы данных Настройки ANSI - PullRequest
0 голосов
/ 13 июля 2020

С настройкой ANSI в SQL Сервер, как правило, обрабатывается на основе соединения за соединением, знает ли кто-нибудь, для какой цели служат настройки ANSI в sys.databases? * is_ansi_padding_on

is_ansi_warnings_on is_ansi_null_default_on is_concat_null_yields_null_on Et c.

Ответы [ 2 ]

2 голосов
/ 13 июля 2020

Настройки базы данных используются только в том случае, если API или сеанс не задают настройки. Современные драйверы, такие как SqlClient, ODB C, OLE DB и др. c, автоматически устанавливают эти параметры в положение ON по умолчанию, хотя позже их можно переключать по мере необходимости. Устаревшие API-интерфейсы (например, DB-LIB) вообще не определяют настройки, поэтому в этом случае используется настройка базы данных ON.

1 голос
/ 13 июля 2020

Вы все равно можете установить эти настройки на уровне базы данных:

USE master;
GO

CREATE DATABASE ANSI_NULLS_ON;
GO
ALTER DATABASE ANSI_NULLS_ON SET ANSI_NULLS ON;
GO
CREATE DATABASE ANSI_NULLS_OFF;
GO
ALTER DATABASE ANSI_NULLS_OFF SET ANSI_NULLS OFF;
GO
SELECT is_ansi_nulls_on
FROM sys.databases
WHERE [name] IN (N'ANSI_NULLS_ON',N'ANSI_NULLS_OFF');
GO

Хотя, похоже, что настройки соединения / сервера переопределяют настройку базы данных, поскольку приведенный ниже результат возвращает 0 для обоих:

USE ANSI_NULLS_ON;
GO
SELECT CASE WHEN NULL = NULL THEN 1 ELSE 0 END AS ANSI_NULLS_ON;
GO
USE ANSI_NULLS_OFF;
GO
SELECT CASE WHEN NULL = NULL THEN 1 ELSE 0 END AS ANSI_NULLS_ON;
GO

Однако, если вы использовали автономную базу данных, это может быть иначе (в настоящее время не тестировали).

...