2013-11-23 6 views
1

SQL Server 2008 R2의 "Script Table As.."및 "Generate Script"기능의 이상한 동작을 발견했습니다.테이블 스크립트를 작성하여 alter 문으로 열 추가

데이터베이스에 테이블이 있습니다. ALTER 쿼리를 사용하여 기존 테이블에 새 열을 삽입했습니다.

이제 동일한 테이블에 CREATE TABLE 스크립트가 필요합니다. 그래서 내가 그 테이블을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 "Script Table As -> CREATE TO -> New Query Window"옵션을 선택했습니다.

그리고 테이블 스크립트 CREATE 테이블 쿼리 새 쿼리 창 뒤에 찾는 놀랍습니다.

나는 새 쿼리 창에서 얻는 결과는 다음과 같습니다 :

/****** Object: Table [dbo].[TblMember] Script Date: 11/23/2013 18:47:26 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
SET ANSI_PADDING ON 
GO 
CREATE TABLE [dbo].[TblMember](
    [Id] [int] IDENTITY(1,1) NOT NULL, 
    [First_Name] [varchar](50) NULL, 
    [Middle_Name] [varchar](50) NULL, 
    [Last_Name] [varchar](50) NULL, 
    [Gender] [varchar](10) NULL, 
) ON [PRIMARY] 
SET ANSI_PADDING OFF 
ALTER TABLE [dbo].[TblMember] ADD [Religion] [varchar](50) NULL 
ALTER TABLE [dbo].[TblMember] ADD [RaceId] [int] NULL 
/****** Object: Index [PK_TblMember] Script Date: 11/23/2013 18:47:26 ******/ 
ALTER TABLE [dbo].[TblMember] ADD CONSTRAINT [PK_TblMember] PRIMARY KEY CLUSTERED 
(
    [Id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 

GO 

SET ANSI_PADDING OFF 
GO 

또한 나는 " Generate Script"을 시도했지만 같은 결과를 발견했다.

누가 테이블에 직접 열을 추가하는 대신 변경 쿼리를 추가하는 이유를 알 수 있습니까?

감사

답변

2

내가 볼의 차이는 SET ANSI_PADDING의 값입니다. 첫 번째 열 집합은 SET ANSI_PADDING ON으로 만들어졌지만 두 번째 집합에서는 OFF 이었지만 두 집합 사이에 SET 만 있다는 점에 유의하십시오. 따라서 단일 명령문에서 어떤 방식 으로든 스크립팅 할 수 없으므로 스크립트를 두 개로 분할해야합니다.

항상으로 두는 것이 좋습니다. 종종 디자이너는이 설정과 다른 설정을 마음대로 변경하여 스크립트를 정의되지 않은 상태로 두는 것이 좋습니다. 테이블과 열은 디자이너에 따라 여러 단계로 생성 될 수 있으므로 다른 설정이 가능할 수 있습니다.

또한 제약 조건을 추가하는 ALTER TABLE이 추가로 있습니다. 정당화 할 수는 없지만 영향을주는 열과 함께 추가 할 수는 있지만 설계자는 이후에 가장 비효율적 인 방법으로 간단히 그렇게합니다.

일반적으로 나는 버그가 있고 신뢰할 수 없기 때문에 디자이너를 절대 사용하지 않는 것을 선호합니다. 자신의 스크립트를 배우고 쓰고 사용하는 것이 좋습니다.

관련 문제