SSMS生成的命令(ansi null,带引号的ident,ansi pad等)的重要性是什么

| 这是从SSMS \“ Script Table as \”-> \“ Create To \”生成的脚本:
USE [DADatabaseMarch11]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[LoginName](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [name] [varchar](255) NOT NULL,
 CONSTRAINT [PK_LoginName] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY],
 CONSTRAINT [IX_LoginName] UNIQUE NONCLUSTERED 
(
    [name] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO
我仅使用SQL 2008 R2,而无需向后兼容。 我的问题是:以上内容是否出于实际目的可以省略?     
已邀请:
ANSI_NULLS http://msdn.microsoft.com/zh-CN/library/ms188048.aspx 您对过滤的索引,计算的列等没有做任何特别的事情,因此可以将其删除。 QUOTED_IDENTIFIER http://msdn.microsoft.com/en-us/library/ms174393.aspx 非常标准的名称,其中nary带有引号,因此在这里它的作用为零。 ANSI_PADDING http://msdn.microsoft.com/zh-CN/library/ms187403.aspx 始终应启用此设置。如果出于任何原因将其设置为关闭,则仅在此处需要它。即使那样,它也不会做很多事情,因为即使您在LoginName.NAME中保留了空格,
where name = \'abc\'   => will match \'abc   \'  (spaces stored)
len(name) = 3     => even if name is \'abc    \'
因为在整个SQL Server中,它已经在做带有尾随空格的有趣事情。 您所需的最低限度
CREATE TABLE dbo.LoginName(
    id int IDENTITY NOT NULL,
    name varchar(255) NOT NULL,
CONSTRAINT PK_LoginName PRIMARY KEY
(
    id
),
 CONSTRAINT IX_LoginName UNIQUE
(
    name
)
)
GO
通常,您只有一个文件组,名为\“ PRIMARY \”,因此可以 索引选项是默认选项,仅在需要调整时才包含或更改它们 默认情况下,主键总是集群的,除非已经有另一个 唯一键是非群集的,因为主键已经群集 因为没有使用特殊名称,所以不需要[] 我在那儿丢了
dbo.
,但是说实话,在99%的情况下也可以 没有指定者的IDENTITY是默认值(1,1)     

要回复问题请先登录注册