2011-08-28 5 views
4

SQL Azure 테이블에 행을 삽입하려고하면 다음과 같은 오류가 발생합니다.SQL Azure가 클러스터 된 인덱스를 인식하지 못합니다.

클러스터 된 인덱스가없는 테이블은이 버전의 SQL Server에서 지원되지 않습니다. 클러스터 된 색인을 생성하고 다시 시도하십시오.

내 문제는 그 테이블에 클러스터 된 인덱스가 있다는 것입니다. Azure MW Script를 생성하기 위해 SQL Azure MW를 사용했습니다.

IF EXISTS (SELECT * FROM sys.objects 
    WHERE object_id = OBJECT_ID(N'[dbo].[tblPasswordReset]') AND type in (N'U')) 
DROP TABLE [dbo].[tblPasswordReset] 
GO 
SET ANSI_NULLS ON 
SET QUOTED_IDENTIFIER ON 
IF NOT EXISTS (SELECT * FROM sys.objects 
    WHERE object_id = OBJECT_ID(N'[dbo].[tblPasswordReset]') AND type in (N'U')) 
BEGIN 
CREATE TABLE [dbo].[tblPasswordReset](
    [PasswordResetID] [int] IDENTITY(1,1) NOT NULL, 
    [PasswordResetGUID] [uniqueidentifier] NULL, 
    [MemberID] [int] NULL, 
    [RequestDate] [datetime] NULL, 
CONSTRAINT [PK_tblPasswordReset] PRIMARY KEY CLUSTERED 
(
    [PasswordResetID] ASC 
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) 
) 
END 
GO 

왜 SQL 애저 내 클러스터 키를 인식하지 않습니다 여기에

내가 사용하고 무엇입니까? 내 스크립트가 틀렸어?

답변

4

스크립트는 아직 존재하지 않는 경우에만 테이블을 생성합니다. 아마도 클러스터 된 인덱스가없는 이전 버전의 테이블이있을 것입니다. 테이블이 클러스터 된 인덱스없이 존재하는 경우

select * from sys.indexes where object_id = object_id('tblPasswordReset') 

, 당신이 좋아하는 하나를 추가 할 수 있습니다 : 당신은 확인하실 수 있습니다 최대한 멀리 볼 수

alter table tblPasswordReset add constraint 
    PK_tblPasswordReset primary key clustered 

, 당신의 문은 Azure create table spec을 준수 않습니다.

+0

는 (I는 주석으로이 문제를두고 싶지만 내 게시물 개수가 너무 빈혈). 이상한 ... – Nate

+0

테이블에 방아쇠가 있습니까? 'select * from sys.triggers where object_id = object_id ('tblPasswordReset')'트리거는 클러스터되지 않은 테이블에 삽입을 수행 할 수 있습니다. – Andomar

+0

방금 ​​SQL Azure DB에서 정확한 스크립트를 실행했으며 정상적으로 실행되었습니다. 문제가이 스크립트와 충돌하는 DB에있는 다른 것으로 의심됩니다. 이전에 만든 테이블 버전일까요? – knightpfhor

2

SSIS를 사용하는 경우주의하십시오. 나는이 동일한 문제를 직접 경험했지만, 수동으로 데이터를 삽입하는 대신 SSIS를 사용하고있었습니다. 기본적으로 SSIS는 테이블을 삭제하고 다시 작성하므로 클러스터 된 인덱스로 제대로 정의 되었더라도 SSIS 스크립트는 실패합니다. SSIS 마법사의 "Edit Mappings"단계에서 테이블 생성 스크립트를 수동으로 정의 할 수 있습니다. 방금 테이블 gen 스크립트를 삭제하고 가져 오기 작업을 수행했습니다. 나는 내가 할 선택 스크립트 클러스터 된 PK_tblPasswordReset의 type_desc = 대한 결과를 얻을 실행하면