Я недавно мигрировал от базы данных PostgreSQL до базы данных SQL Server. Для переключения данных, я должен был включить IDENTITY_INSERT. Хорошо приезжайте, чтобы узнать, что я получаю все виды странных ошибок, должных копировать значения идентификационных данных (которые установлены как первичные ключи) после выполнения вставки в любой из таблиц.
У меня есть довольно много таблиц. Что было бы самым легким способом автоматического пересева идентификационных данных каждой таблицы так, чтобы это было после max(RID)
?
Используйте информацию из по этой ссылке в сочетании с функцией SQL, которая получает максимальное значение (RID) из каждой таблицы, которую необходимо сбросить. Например, если вы хотите начать начальное значение первичного ключа с 25000, используйте приведенный ниже код (StartSeedValue - 1)
DBCC CHECKIDENT('myTable', RESEED, 24999)
Таким образом, в комбинации вы должны получить что-то вроде этого
DECLARE @maxVal INT
SELECT @maxVal = ISNULL(max(ID),0)+1 from mytable
DBCC CHECKIDENT('mytable', RESEED, @maxVal)
Извините за псевдокод, был некоторое время с тех пор, как я написал функцию SQL :)
EDIT:
Спасибо за уловку, изменил INTEGER на INT
USE YourDBName
GO
SELECT *
FROM sys.Tables
GO
Это даст вам список всех пользовательских таблиц в базе данных. Используйте этот запрос как свой «цикл», и он должен позволить сбросить начальные значения во всех таблицах.