2013-02-25 1 views
15

이전 멤버십 사용에서 guid 대신 int을 사용하는 mvc4에 포함 된 데이터베이스로 마이 그 레이션하려고합니다.'uniqueidentifier'에서 'int'로의 변환이 연결된 데이터베이스 서버에서 지원되지 않습니다.

Conversion from int to uniqueidentifier is not supported on the connected database server.

가 어떻게 SQL Server Management Studio를 통해 intUserId을 변경할 수 있습니다 유형을 변경할 때 나는 오류 다음 얻을

?

+1

해당 데이터 유형은 호환되지 않으므로 – Lamak

답변

6

는 그런 다음 새로운 id 컬럼 채우기 위해 다음과 같은 실행 새 열 (ALTER TABLE ADD [NewId] INTEGER)를 추가해야합니다 :이

WITH Cte 
AS 
(
    SELECT * 
    , ROW_NUMBER() OVER(ORDER BY [Your GUID Column Here] DESC) AS RowNumber 
    FROM YourTable 
) 
UPDATE Cte 
SET [NewId]= RowNumber 
GO 

가 새 ID 열이 클러스터 된 기본 키를 사용할 수 있습니다

1

이전 답변은 정확하지만 원래 값에 "다시 묶는"것은 없습니다.

~ 시도해보십시오. 그러나 그것은 부정적인 가치를 초래할 수 있습니다.

Guid g = new Guid("{cccc3333-3333-3333-cccc-cccc3333cccc}"); 
byte[] _bytes = g.ToByteArray(); 
Int64 i = ((Int64)_bytes[0]) | ((Int64)_bytes[1] << 8) | ((Int64)_bytes[2] << 16) | ((Int64)_bytes[3] << 24); 



Int64 i = -3333333; 
Guid g = new Guid(i, 0, 0, new byte[] {0, 0, 0, 0, 0, 0, 0, 0}); 

"나는 인터넷에서 찢어졌습니다."이것은 위험 부담으로 사용하십시오.

Thomas Haratyk의 이전 답변을 참조하겠습니다. 그러나 나는 이것을 옵션으로 제공한다.

39

첫 번째 데이터 유형을 varbinary 또는 기타 지원되는 다른 유형으로 변경하십시오. 그러면 당신은 그것을 당신이 원하는 것에 변환 할 수 있습니다.

+1

작동하는 계산을 사용하여 변환해야합니다 ... 감사 ... –

관련 문제