2

SQL Server Management Studio を使用して、私の問題はデータベース作成スクリプトに起因します。スクリプトはデータベースを作成するように書かれており、そのテーブルの多くには ID 列があります。

CREATE TABLE Workshop
(
    WorkshopID int IDENTITY,
    WorkshopName varchar(40) NOT NULL,
    Description varchar(800),
    CONSTRAINT PK_Workshop PRIMARY KEY (WorkshopID)
);

私の問題は、スクリプトがID列として列を単純に作成しても、スクリプトが実行された後、ID列であるべき列が実際にはID列に設定されていないことです。

明確にするために: 上記のコードを実行すると、指定されたテーブルが作成されますが、WorkshopID は ID 列にはなりません。

スクリプトが記述どおりに機能するためには、何を変更する必要がありますか?

4

1 に答える 1

0

参考までに、SQL Management Studio のデザイナーを使用してこのスクリプトを生成すると、次のスクリプトが生成されます。

/* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Table_1
    (
    WorkshopID int NOT NULL IDENTITY (1, 1),
    WorkshopName varchar(40) NOT NULL,
    Description varchar(800) NULL
    )  ON [PRIMARY]
GO
ALTER TABLE dbo.Table_1 ADD CONSTRAINT
    PK_Table_1 PRIMARY KEY CLUSTERED 
    (
    WorkshopID
    ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,   ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO
ALTER TABLE dbo.Table_1 SET (LOCK_ESCALATION = TABLE)
GO
COMMIT

テーブルを作成し、[Create To...] メニュー オプションを使用してそれをスクリプト化すると、まったく異なるスクリプトが得られます。

USE [MyDatabase]
GO

/****** Object:  Table [dbo].[Workshop]    Script Date: 11/27/2012 14:05:33 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[Workshop](
    [WorkshopID] [int] IDENTITY(1,1) NOT NULL,
    [WorkshopName] [varchar](40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [Description] [varchar](800) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
 CONSTRAINT [PK_Workshop] PRIMARY KEY CLUSTERED 
(
    [WorkshopID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON,    ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO
于 2012-11-27T21:28:17.700 に答える