2013-02-25 17 views
15

私のデータベースは、古いメンバーシップから​​の代わりに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 

あなたが

1
クラスタ化された主キーを使用することができ、新たなID列を持っています

前の回答は正しいですが、元の値との "結び戻し"はありません。

〜これを試すことができます。しかし、それは負の値になるかもしれません。

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}); 

これは「私はインターネットから切り取ったものの1つ」なので、自己責任で使用してください。

私はThomas Haratykの前回の返答に行きます。しかし、私はこれをオプションとして提供しています。

39

最初にデータ型をvarbinaryなどの他のサポートされている型に変更します。あなたはそれをあなたが望むものに変換することができます。

+1

の計算結果を使用してデータ型を変換する必要があります。 –

関連する問題