2012-08-16 62 views
-1

此脚本是从SQL Server Management Studio生成的。为什么我得到这个错误,我该如何解决ALTER脚本?请注意,我将单词“CREATE”更改为“ALTER”。所以我猜CREATE语法与ALTER语法略有不同,或者有更少的限制。我正在使用SQL Server 2008 Express。我看到它告诉我以分号结束,但我想确保终止该声明以后不会引起任何问题。如果您可以描述查询的每一部分以及我们正在更改的内容,则会奖励奖励积分。T-SQL:对ALTER TABLE脚本崩溃修改CREATE TABLE脚本

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
--CREATE TABLE [dbo].[defect](
ALTER TABLE [dbo].[defect](
    [defect_id] [bigint] IDENTITY(1,1) NOT NULL, 
    [defect_number] [nvarchar](50) NULL, 
    [defect_type] [nvarchar](50) NULL, 
    [date_created] [datetime] NULL, 
    [user_identified_by] [nvarchar](50) NULL, 
    [status] [nvarchar](50) NULL, 
    [date_modified] [datetime] NULL, 
    [user_qa] [nvarchar](50) NULL, 
    [severity] [nvarchar](50) NULL, 
    [environment] [nvarchar](50) NULL, 
    [user_assigned] [nvarchar](50) NULL, 
    [project] [nvarchar](50) NULL, 
    [target_table_affected] [nvarchar](50) NULL, 
    [required_for_go_live] [nvarchar](50) NULL, 
    [project_phase] [nvarchar](50) NULL, 
    [completion_hours] [nvarchar](50) NULL, 
    [date_migrate_prod] [datetime] NULL, 
    [description] [text] NULL, 
    [table_columns_affected] [text] NULL, 
    [sample_data] [text] NULL, 
    [action_taken] [text] NULL, 
    [supp_detail_links] [text] NULL, 
    [supp_detail_links_dtml] [text] NULL, 
    [thread] [bigint] NULL, 
CONSTRAINT [PK_defect] PRIMARY KEY CLUSTERED 
(
    [defect_id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 
GO 

错误:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '('.
Msg 319, Level 15, State 1, Line 29
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.

回答

1

ALTER TABLECREATE TABLE是两个,你不能简单地用ALTER更换CREATE acheive完全不同的SQL语句,让你产生你的改变方式是错误的,你所能做的就是

  1. 您可以使用现有的Change Script选项SSMS每次当您更改任何表或数据库对象只是产生ALTER脚本。
  2. 另外,您可以使用VS2010生成修改脚本,(谷歌它,因为我不打算写这个位置)或任何第三方的脚本生成,容易获得互联网上

另外,除了张贴在SO SQL语句让其他人为你解释它们,给予SQL学习一段时间(至少在线使用SQL书籍,使用SQL服务器安装)。

+0

+1仅用于在线推荐图书。 – MatBailie 2012-08-16 07:56:21

+0

我很惊讶,我的问题得到了-2,但我为它赢得了“热门问题”徽章。 – MacGyver 2013-03-13 17:09:03

0

如果你想增加一列,语法是

ALTER TABLE [dbo].[defect] 
ADD 
    [defect_id] [bigint] IDENTITY(1,1) NOT NULL, 
... 

如果你想改变一个列的大小

ALTER TABLE [dbo].[defect] 
    ALTER COLUMN [completion_hours] [nvarchar](50) NULL 

http://msdn.microsoft.com/en-us/library/ms190273.aspx

您将来可以做什么是当您更改DEV上的列定义,然后单击SSMS设计视图中的Script Changes按钮并将该脚本应用于您的QA环境。

这些“奇特的工具”存在的原因是因为这有点痛苦。如果它只是一个预算的问题,那么微软SSDT可能会根据自己的喜好http://msdn.microsoft.com/en-us/data/tools.aspx

+0

我们假设从这个答案很多。你能否更好地描述我们在这里做的事情,并描述一下新的代码是什么?你是说你刚刚在关键字“ADD”中添加了关键字,就是这样吗? – MacGyver 2012-08-16 07:44:21

+0

我可以,但我不清楚你在做什么。你的出发点是什么?您是想要改变现有表格的结构,还是将列添加到现有表格? – podiluska 2012-08-16 07:45:58

+0

@MacGyver - 你需要特别说明***你想对桌子做些什么改变。 * [你不能重新包含已经存在的所有内容,直到我们知道哪些行是真正的更改,我们不能告诉你如何更改代码。也许你可以检查在线书籍的语法作为开始?] * – MatBailie 2012-08-16 07:48:53