我正在为我们的生产环境创建SQL Server 2012上的新数据库。当我使用“新建数据库...”选项从SQL Server Management Studio并生成输出我得到:创建新数据库时的最佳ANSI选项
CREATE DATABASE [AAA]
CONTAINMENT = NONE
ON PRIMARY
(NAME = N'AAA', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQL2014\MSSQL\DATA\AAA.mdf' , SIZE = 5120KB , FILEGROWTH = 1024KB)
LOG ON
(NAME = N'AAA_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQL2014\MSSQL\DATA\AAA_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO
ALTER DATABASE [AAA] SET COMPATIBILITY_LEVEL = 120
GO
ALTER DATABASE [AAA] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [AAA] SET ANSI_NULLS OFF
GO
ALTER DATABASE [AAA] SET ANSI_PADDING OFF
GO
ALTER DATABASE [AAA] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [AAA] SET ARITHABORT OFF
GO
ALTER DATABASE [AAA] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [AAA] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [AAA] SET AUTO_CREATE_STATISTICS ON(INCREMENTAL = OFF)
GO
ALTER DATABASE [AAA] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [AAA] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [AAA] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [AAA] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [AAA] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [AAA] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [AAA] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [AAA] SET DISABLE_BROKER
GO
ALTER DATABASE [AAA] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [AAA] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [AAA] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [AAA] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [AAA] SET READ_WRITE
GO
ALTER DATABASE [AAA] SET RECOVERY SIMPLE
GO
ALTER DATABASE [AAA] SET MULTI_USER
GO
ALTER DATABASE [AAA] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [AAA] SET TARGET_RECOVERY_TIME = 0 SECONDS
GO
ALTER DATABASE [AAA] SET DELAYED_DURABILITY = DISABLED
GO
USE [AAA]
GO
IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY') ALTER DATABASE [AAA] MODIFY FILEGROUP [PRIMARY] DEFAULT
GO
为什么这么多的ANSI选项默认为关闭? 服务器实例是由RackSpace代表我们设置的。这可能是因为他们在实例中设置了一些默认值?
谢谢, 克里斯
好问题。其中的每一个设置本身都是一个主题。我认为没有人能够在堆栈溢出的长度限制中给出一个很好的答案。如果有任何你关心的问题,我会分开询问他们(谷歌之后)。我所看到的一件事是,您的日志文件设置为增长一个百分比,如果您可以将其更改为一个固定的数量,它可能是最好的。 –
感谢@RichBenner获取有关自动增长百分比的信息。最让我困扰的设置是'ANSI_NULLS'。标准告诉我,'NULL = NULL'应该返回'UNKNOWN' /'NULL'(即选项为ON时)而不是'TRUE'(当选项为OFF时),但默认情况下是后者(OFF)网站建议将其设置为OFF:https://www.simple-talk.com/sql/database-administration/database-properties-health-check/ –
简单对话的建议是健全的。一般而言,您不希望创建默认允许空值的列。 –