每次进行CREATE / ALTER时都需要运行SET ANSI_NULLS ON和SET QUOTED_IDENTIFIERS吗?

时间:2017-09-21 19:20:27

标签: sql sql-server database sql-server-2008 sql-server-2012

我了解这些设置的作用以及它们为何如此重要。但是,我有几个问题:

如果我在CREATE / ALTER之前运行一次:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

下次再进行另一次创建/更改时,是否有必要再次运行它?

基本上,这些SET命令是否会在批次/连接之间进行更改?

1 个答案:

答案 0 :(得分:1)

创建对象时指定的任何SET选项(表或其他)永久地绑定到该对象,并且这些设置很重要。例如,要将过滤的索引添加到表中,必须使用一组正确指定的SET选项创建它。您可以通过sys.sql_modules查看所有这些选项。

但是,一旦创建了对象,就无法更改这些选项(或者至少不能通过我知道的任何方式更改),因此向SET脚本添加ALTER TABLE选项将适用于任何您要运行的SQL(像往常一样),但不会更新与该表关联的SET选项。