此脚本是从SQL Server Management Studio生成的。为什么我会收到此错误以及如何修复ALTER脚本?请注意,我将“CREATE”改为“ALTER”。所以我猜测CREATE语法与ALTER语法略有不同,或者限制较少。我正在使用SQL Server 2008 Express。我看到它告诉我以分号结束,但我想确保终止声明不会在以后引起任何问题。如果您可以描述每个查询的作用以及我们正在改变的内容,则奖励积分。
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
'('。)附近的语法不正确 消息319,级别15,状态1,行29 关键字'with'附近的语法不正确。如果此语句是公用表表达式,xmlnamespaces子句或更改跟踪 context子句,前一个语句必须以a结尾 分号。
答案 0 :(得分:1)
ALTER TABLE
和CREATE TABLE
是两个完全不同的SQL语句,只需将CREATE
替换为ALTER
就无法实现,因此生成ALTER的方式是错误的,你能做的是
ALTER
选项生成Change Script
脚本。此外,不是在SO上发布SQL语句以供其他人为您解释,而是给SQL学习一些时间(至少在线使用SQL书籍,与SQL服务器一起安装)。
答案 1 :(得分: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环境。
存在这些“奇特工具”的原因是因为这有点痛苦。如果这只是一个预算问题,那么Microsoft SSDT可能更符合您的喜好http://msdn.microsoft.com/en-us/data/tools.aspx
答案 2 :(得分:0)
ALTER和CREATE与存储过程的工作方式不同。 使用此链接可以准确了解表上ALTER语句的工作原理。