2014-05-14 1 views
0

UserCredentials이라는 테이블이 있는데 uniqueidentifier[UserCredentialId]이 있습니다. 새 사용자를 만들려고 할 때 처음 시도 할 때 00000000-0000-0000-0000-000000000000이 표시되고 다른 사용자를 추가하려고하면 PK를 복제 할 수 없다고 표시됩니다. 처음에 나는 그것이 무엇을 의미하는지 짐작하기가 힘들었지 만, 나는 uniqueidentifier 때문에 임의의 ID를 생성하지 않는다고 생각합니다.SQL UniqueIdentifier

어떻게해야합니까?

CREATE TABLE [dbo].[UserCredential](
    [UserCredentialId] [uniqueidentifier] NOT NULL, 
    [UserRoleId] [int] NOT NULL, 
    [Username] [varchar](25) NOT NULL, 
    [Password] [varchar](50) NOT NULL, 
    [PasswordSalt] [varchar](max) NOT NULL, 
    [FirstName] [varchar](50) NOT NULL, 
    [LastName] [varchar](50) NOT NULL, 
    [PayorCode] [varchar](20) NOT NULL, 
    [ProviderCode] [varchar](50) NULL, 
    [CorporationCode] [varchar](50) NULL, 
    [Department] [varchar](50) NULL, 
    [Status] [varchar](1) NOT NULL, 
    [DateCreated] [datetime] NOT NULL, 
    [DateActivated] [datetime] NULL, 
    [Deactivated] [datetime] NULL, 
    [DateUpdated] [datetime] NULL, 
    [CreatedBy] [varchar](50) NOT NULL, 
    [UpdatedBy] [varchar](50) NOT NULL, 
    [EmailAddress] [varchar](50) NULL, 
    [ContactNumber] [int] NULL, 
    [Picture] [varbinary](max) NULL, 
CONSTRAINT [PK_UserCredential_1] PRIMARY KEY CLUSTERED 
(
    [UserCredentialId] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

내가 이미 (newid())로 설정하지만 여전히 작동하지 :

편집

은 여기 내 SQL 테이블 구조입니다.

+0

SQL 테이블 스크립트를 게시 할 수 있습니까? – PEO

+0

당신은'newid()'에 무엇을 설정 했습니까? –

+0

그냥 일반 newid(). 아무것도 더. –

답변

2

사용자 인스턴스의 ID를 으로 설정하십시오. Guid.NewGuid();

user.Id = Guid.NewGuid(); 
+1

동일한 대답을 제안했습니다. Guid.NewGuid(); – Fastidious

0

당신은 훨씬 정체성처럼, 삽입 중에 새 값으로 테이블의 기본에있는 모든 값을 가질 수 있습니다.

newid()를 사용할 모든 삽입의 기본값을 설정하려면이 옵션을 실행하십시오.

ALTER TABLE [dbo].[UserCredential] ADD CONSTRAINT [DF_UserCredential_UserCredentialID] DEFAULT (newid()) FOR [UserCredentialId] 
GO 
1

변경

[UserCredentialId] UNIQUEIDENTIFIER DEFAULT (NEWSEQUENTIALID()) NOT NULL 

확인하려면 테이블 정의는 왜 http://technet.microsoft.com/en-us/library/ms189786.aspx에서 NEWID보다 NEWSEQUENTIALID 선호합니다.

GUID 열을 행 식별자로 사용하는 경우 NEWSEQUENTIALID를 사용하면 NEWID 함수를 사용하는 것보다 빠를 수 있습니다. 이는 NEWID 함수가 임의의 활동을 일으키고 캐시 된 데이터 페이지를 적게 사용하기 때문입니다. NEWSEQUENTIALID를 사용하면 데이터 W 색인 페이지를 완전히 채울 수 있습니다.