2013-02-25 127 views
15

我即将使用旧成员资格将数据库迁移到mvc4中包含的数据库,该工具使用int而不是​​。连接的数据库服务器不支持从'uniqueidentifier'到'int'的转换

当改变类型我得到以下错误:

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

如何通过SQL Server Management Studio中更改UserIdint

+1

这些数据类型不兼容,您需要使用适合您的计算来转换它们 – Lamak 2013-02-25 14:27:09

回答

6

您必须添加一个新列(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列,您可以使用一个聚集主键

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

这是“我从互联网上撕下来的”之一,所以请自担风险。

我会与以前的回应从托马斯哈拉特克。但我提供这个选项。

39

首先将数据类型更改为任何其他支持的类型,如varbinary或任何其他类型。那么你可以从那个转换到你想要的。

+1

它的工作原理...谢谢... – 2015-04-09 07:06:54

相关问题