72 lines
2.4 KiB
Transact-SQL
72 lines
2.4 KiB
Transact-SQL
use PharmIndexTP
|
|
|
|
|
|
DECLARE @TableName NVARCHAR(255);
|
|
DECLARE @IdentityColumn NVARCHAR(255);
|
|
declare @currentIdentityValue int;
|
|
DECLARE @MaxIdentityValue INT;
|
|
DECLARE @SQL NVARCHAR(MAX);
|
|
declare @reseedSQL nvarchar(max)='';
|
|
|
|
-- Create a table variable to hold the list of tables
|
|
DECLARE @Tables TABLE (TableName NVARCHAR(255));
|
|
|
|
-- Insert the tables into the table variable
|
|
INSERT INTO @Tables (TableName)
|
|
VALUES
|
|
('ServiceProvider'),
|
|
('ServiceProviderAddress'),
|
|
('ServiceProviderCommunication'),
|
|
('ServiceProviderCommunication2'),
|
|
('ServiceProviderECommunication'),
|
|
('ServiceProviderECommunication2'),
|
|
('ServiceProviderReference'),
|
|
('ServiceProviderRole')
|
|
|
|
-- Cursor to iterate over the list of tables
|
|
DECLARE TableCursor CURSOR FOR
|
|
SELECT TableName
|
|
FROM @Tables;
|
|
|
|
OPEN TableCursor;
|
|
FETCH NEXT FROM TableCursor INTO @TableName;
|
|
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
-- Get the primary key column name which is assumed to be the identity column
|
|
SELECT @IdentityColumn = [KU].[COLUMN_NAME]
|
|
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC
|
|
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KU
|
|
ON TC.CONSTRAINT_NAME = KU.CONSTRAINT_NAME
|
|
WHERE TC.TABLE_NAME = @TableName
|
|
AND TC.CONSTRAINT_TYPE = 'PRIMARY KEY';
|
|
|
|
-- Get the maximum identity value for the current table
|
|
SET @SQL = 'SELECT @MaxIdentityValue = MAX(' + @IdentityColumn + ') FROM ' + @TableName;
|
|
EXEC sp_executesql @SQL, N'@MaxIdentityValue INT OUTPUT', @MaxIdentityValue OUTPUT;
|
|
--print 'max value fetched'
|
|
|
|
--fetch current identity value
|
|
set @sql = 'SELECT @currentIdentityValue=IDENT_CURRENT('''+@tableName+''') ';
|
|
exec sp_executesql @sql, N'@currentIdentityValue INT OUTPUT', @currentIdentityValue OUTPUT;
|
|
--print 'identity value fetched'
|
|
|
|
print 'table: "'+@tableName+'", column "'+@IdentityColumn+'"
|
|
current column max value: '+cast(@MaxIdentityValue as varchar(50))+'
|
|
identity value: '+cast(@currentIdentityValue as varchar(50));
|
|
|
|
-- Reseed the identity column
|
|
if @currentIdentityValue < @MaxIdentityValue
|
|
begin
|
|
SET @SQL = 'DBCC CHECKIDENT (''' + @TableName + ''', RESEED, ' + CAST(ISNULL(@MaxIdentityValue, 0) AS NVARCHAR) + ')';
|
|
--EXEC sp_executesql @SQL;
|
|
set @reseedSQL = @reseedSQL+char(13)+char(10)+@sql
|
|
end
|
|
|
|
FETCH NEXT FROM TableCursor INTO @TableName;
|
|
END
|
|
|
|
print @reseedSQL;
|
|
|
|
CLOSE TableCursor;
|
|
DEALLOCATE TableCursor; |