Преобразование из 'uniqueidentifier' в 'int' не поддерживается на подключенном сервере базы данных
Я собираюсь перенести мою базу данных с помощью старого членства в состав, включенный в mvc4, который использует int
вместо guid
.
При изменении типа я получаю следующую ошибку:
Преобразование из int в uniqueidentifier не поддерживается на подключенном сервере базы данных.
Как изменить UserId
на int
через SQL Server Management Studio?
Ответы
Ответ 1
Вам нужно добавить новый столбец (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, в котором вы можете использовать кластерный первичный ключ
Ответ 2
Сначала измените тип данных на любой другой поддерживаемый тип типа varbinary или что-нибудь еще. то вы можете конвертировать из этого в то, что хотите.
Ответ 3
Предыдущий ответ верен, но исходное значение не привязано.
Вы можете попробовать. Но это может привести к отрицательному значению.
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});
Что один из них "я разорвал из интернета", поэтому используйте на свой страх и риск.
Я бы пошел с предыдущим ответом Томаса Харатика. Но я предлагаю это как вариант.