Я хочу изменить тип данных столбца в таблице на сервере sql. Я использовал следующую инструкцию:
ALTER TABLE dbo.tbltest
ALTER COLUMN ID uniqueidentifier
Но он выдает ошибку
Столкновение типа операнда: bigint несовместим с uniqueidentifier
Я хочу изменить тип данных столбца в таблице на сервере sql. Я использовал следующую инструкцию:
ALTER TABLE dbo.tbltest
ALTER COLUMN ID uniqueidentifier
Но он выдает ошибку
Столкновение типа операнда: bigint несовместим с uniqueidentifier
Вы не можете преобразовать целое число в uniqueidentifier
. Но вы можете сделать это так.
Сначала удалите старые данные из таблицы.
Измените столбец на какой-нибудь текстовый формат (например, VARCHAR(200)
).
ALTER TABLE dbo.tbltest
ALTER COLUMN ID VARCHAR(200)
ALTER TABLE dbo.tbltest
ALTER COLUMN ID uniqueidentifier
Чтобы было ясно, вы не можете преобразовать столбец из числового в uniqueidentifier
напрямую, но вы можете преобразовать numeric
в varchar
в uniqueidentifier
.
Сначала нужно добавить столбец (возможно, по умолчанию или с нулевым значением, чтобы столбец был успешно добавлен в строки с существующими данными), обновите его до нужных вам значений или измените любые ключи (если это первичный ключ изменит его на новый столбец, а затем также изменит любые внешние ключи в этой таблице), затем удалите старый столбец и, при необходимости, измените новый столбец (например, установив семя идентификаторов, удалив обнуление и т.д.).
Примечание для людей, использующих Entity Framework:
Очевидно, что если у вас есть большая база данных со сложными отношениями, удаление всех связей и столбцов идентификаторов, а повторное добавление их - огромное испытание.
Намного проще обновить сгенерированную модель (.edmx).
Да, Visual Studio позволяет вам обновлять тип данных без жалоб. Фактически, когда вы сохраняете файл .edmx, отношения будут проверяться; любые поля, которые вы, возможно, пропустили, будут отображаться как ошибки.
После того, как вы закончите, вы можете восстановить базу данных из модели. Бум, сделано.
Если ответ Сингха не работает, вам, вероятно, придется отбросить таблицу и воссоздать ее.