added files from swmgmt03
This commit is contained in:
72
CENT - reseed pharmindexTP identity.sql
Normal file
72
CENT - reseed pharmindexTP identity.sql
Normal file
@@ -0,0 +1,72 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user