データベースを古いメンバーシップの使用から、mvc4に含まれているものに移行しようとしています。これは、int
ではなくguid
を使用します。
タイプを変更すると、次のエラーが発生します。
intからuniqueidentifierへの変換は、接続されているデータベースサーバーではサポートされていません。
SQL Server Management Studioを使用してUserId
をint
に変更するにはどうすればよいですか?
新しい列を追加する必要があります(ALTER TABLE ADD [NewId] INTEGER
)次に、次のコマンドを実行して、新しいID列にデータを入力します。
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列があります。
最初に、データ型を、varbinaryなどのサポートされている他の型に変更します。それからあなたはそれからあなたが望むものに変換することができます。
前の答えは正しいですが、元の値への「結びつき」はありません。
これを試すことができます。ただし、負の値になる可能性があります。
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からの以前の返答を使用します。しかし、私はこれをオプションとして提供します。