-1

このスクリプトは、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

エラー:

メッセージ 102、レベル 15、状態 1、行 1
「(」付近の構文が正しくありません。
メッセージ 319、レベル 15、状態 1、行 29
キーワード「with」付近の構文が正しくありません。このステートメントが共通テーブル式の場合、xmlnamespaces 句または変更追跡コンテキスト句の場合、前のステートメントはセミコロンで終了する必要があります。

4

3 に答える 3

1

ALTER TABLEとはまったく異なる2つのSQLステートメントであり、単に置き換えるだけでCREATE TABLEは達成できないため、ALTERの生成方法が間違っているため、実行できることは次のとおりです。CREATEALTER

  1. Tableまたはdbオブジェクトを変更するたびに、SSMSで使用可能なオプションALTERを使用してスクリプトを簡単に生成できます。Change Script
  2. または、VS2010(ここではこれを書くつもりはないのでグーグル)またはインターネットで簡単に入手できるサードパーティのスクリプトジェネレータを使用して、Alterスクリプトを生成することもできます。

さらに、他の人が説明するためにSOにSQLステートメントを投稿する代わりに、SQL学習に時間を割いてください(少なくとも、SQLサーバーとともにインストールされたオンラインのSQLブックを使用して)。

于 2012-08-16T07:53:35.567 に答える
0

ALTERとCREATEは、ストアドプロシージャと同じようには機能しません。このリンクを使用して、テーブルのALTERステートメントがどのように機能するかを正確に理解してください。

http://www.w3schools.com/sql/sql_alter.asp

于 2012-08-16T07:57:46.447 に答える
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 の列定義を変更し、Script ChangesSSMS デザイン ビューでボタンをクリックして、そのスクリプトを QA 環境に適用することです。

これらの「派手なツール」が存在する理由は、これがすべて少し面倒だからです。予算の問題であれば、Microsoft SSDT の方が好みに合うかもしれません http://msdn.microsoft.com/en-us/data/tools.aspx

于 2012-08-16T07:41:57.927 に答える