数据版本为:SQL Server 2008 R2
打开Microsoft SQL Server Management Studio,选中目标表后,右键,编写表脚本为,Create 到,获得的脚本如下:
-------------------------------------------------------------------------
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING OFF
GO
CREATE TABLE [dbo].[Test](
[f1] [varchar](20) NULL,
[f2] [varchar](25) NOT NULL,
[f3] [nvarchar](255) NULL,
[f4] [varchar](25) NULL
) ON [PRIMARY]
SET ANSI_PADDING ON
ALTER TABLE [dbo].[Test] ADD [f5] [varchar](50) NULL
ALTER TABLE [dbo].[Test] ADD [f6] [nvarchar](10) NULL
SET ANSI_PADDING OFF
ALTER TABLE [dbo].[Test] ADD [f7] [varchar](10) NULL
ALTER TABLE [dbo].[Test] ADD [f8] [varchar](50) NULL
SET ANSI_PADDING ON
ALTER TABLE [dbo].[Test] ADD [f9] [varchar](50) NULL
ALTER TABLE [dbo].[Test] ADD [f10] [datetime] NULL
SET ANSI_PADDING OFF
ALTER TABLE [dbo].[Test] ADD [f11] [varchar](50) NULL
SET ANSI_PADDING ON
ALTER TABLE [dbo].[Test] ADD [f12] [varchar](50) NULL
ALTER TABLE [dbo].[Test] ADD CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED
(
[f2] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
-------------------------------------------------------------------------
想知道为何有些字段会以ALTER TABLE来添加,而不是都放在CREATE TABLE一块?
------解决思路----------------------
系统把变更的历史记录保存起来;当需要查看时,直接打印历史记录。
------解决思路----------------------
SQL2005没有这样的情况,不过你可以自己动态生成这个脚本
------解决思路----------------------
问题就出在 SET ANSI_PADDING ON (OFF) 上了。
他们的区别是:
设置 OFF 时,varchar 类型,最后面的如果是空格,则要删除 ,char 类型 最后面也不补空格
设置ON时,varchar 按原样写入库中,char 类型,后要要用空格补齐,这也SQL Server 的默认设置。
如果你想让你的 create 语句包含表中的所有字段,必须重建这张表,具体的做法是,把你贴上来的这些语句中的 SET ANSI_PADDING On(OFF) ,都删除 。