【发布时间】:2017-06-15 02:31:18
【问题描述】:
好的,在 SQL Server 2005 中,当您使用
脚本表作为 - 创建到 - 文件(剪贴板)
您将获得该表的脚本中的所有信息。
' 2005 Script table as...
CREATE TABLE [dbo].[User](
[id] [int] IDENTITY(1,1) NOT NULL,
[ModID] [int] NULL,
[Moderator] [int] NULL CONSTRAINT [DF_User_Moderator] DEFAULT ((0)),
[ModName] [varchar](25) COLLATE SQL_Latin1_General_CP1_CI_AS NULL CONSTRAINT [DF_User_ModName] DEFAULT ('None')
CONSTRAINT [PK_AskUser] PRIMARY KEY CLUSTERED
上面的代码很完美,但是可以满足我的需要。当您在 SQL Server 2012 中执行相同的操作时,情况并非如此。
'2012 Script table as...
CREATE TABLE [dbo].[User](
[id] [int] IDENTITY(1,1) NOT NULL,
[ModID] [int] NULL,
[Moderator] [int] NOT NULL,
[ModName] [int] NOT NULL
CONSTRAINT [PK_AskUser] PRIMARY KEY CLUSTERED
ALTER TABLE [dbo].[AskUser] ADD CONSTRAINT [DF_User_Moderator] DEFAULT ((0)) FOR [Moderator]
ALTER TABLE [dbo].[AskUser] ADD CONSTRAINT [DF_User_ModName] DEFAULT ('None') FOR [ModName]
如何,我们可以像 2005 年那样编写表格吗?我简直不敢相信微软会从他们的管理系统中删除这个功能。
欢迎对此提出任何想法。请。我有 20 个包含 100 多列的表,需要像 2005 年那样编写脚本,我不想编辑所有这些行,那将是一场噩梦。
是的,我可以将数据库导入到 2005 中,然后以这种方式做我需要的事情。然而,这违背了 Management Studio 的目的,以及我们应该能够在其中做什么。
韦恩
【问题讨论】:
-
你确定你复制了第二组代码正确吗(我觉得它缺少一些括号)。否则,我看不出第二组有什么问题。
-
唯一的区别是
ModName上的COLLATE位?您确定您使用的 2012 服务器尚未设置为不区分大小写吗?如果是,他们似乎正在输出等效的 ddl。 -
您需要这种方式的原因是什么?结果是等价的。
-
我是说,我认为新方法没有任何缺陷,我猜为什么它是一个问题,奇怪的用例是没有意义的。
-
你是绝对正确的@HartCO。我只是在我的 ASP 页面中运行了一个脚本,它运行良好。如果您将此信息发布到新的答案中,我将奖励您。 (只是对其他人而言,我以前从未使用过这种类型的脚本。)
标签: sql sql-server sql-server-2005 sql-server-2012