由于Server中的ANSI设置通常是通过连接来处理的,有人知道sys.databases中的ANSI设置有什么用途吗?
发布于 2020-07-13 14:44:50
只有在API或会话未指定设置时才使用数据库设置。现代的驱动程序,如SqlClient、ODBC、OLE DB等,默认情况下会自动设置这些选项,尽管它们可以在以后根据需要进行切换。遗留API(例如DB)根本不指定设置,因此在这种情况下使用了设置上的数据库。
发布于 2020-07-13 14:41:02
还可以在数据库级别设置这些设置:
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但是,如果您使用的是包含的数据库,那么这可能是不同的(此时还没有测试)。
https://stackoverflow.com/questions/62878035
复制相似问题