Básicamente, debo restablecer el Incremento de identidad para todas las tablas a su original. Aquí probé un código, pero falla.SQL Server Restablecer el aumento de identidad para todas las tablas
código real del enlace:
USE World00_Character
GO
-- Create a cursor to loop through the System Ojects and get each table name
DECLARE TBL_CURSOR CURSOR
-- Declare the SQL Statement to cursor through
FOR (SELECT Name FROM Sysobjects WHERE Type='U')
-- Declare the @SQL Variable which will hold our dynamic sql
DECLARE @SQL NVARCHAR(MAX);
SET @SQL = '';
-- Declare the @TblName Variable which will hold the name of the current table
DECLARE @TblName NVARCHAR(MAX);
-- Open the Cursor
OPEN TBL_CURSOR
-- Setup the Fetch While that will loop through our cursor and set @TblName
FETCH NEXT FROM TBL_CURSOR INTO @TblName
-- Do this while we are not at the end of the record set
WHILE (@@FETCH_STATUS <> -1)
BEGIN
-- Appeand this table's select count statement to our sql variable
SET @SQL = @SQL + ' (SELECT '''[email protected]+''' AS Table_Name,COUNT(*) AS Count FROM '[email protected]+') UNION';
-- Delete info
EXEC('DBCC CHECKIDENT ('[email protected]+',RESEED,(SELECT IDENT_SEED('[email protected]+')))');
-- Pull the next record
FETCH NEXT FROM TBL_CURSOR INTO @TblName
-- End the Cursor Loop
END
-- Close and Clean Up the Cursor
CLOSE TBL_CURSOR
DEALLOCATE TBL_CURSOR
-- Since we were adding the UNION at the end of each part, the last query will have
-- an extra UNION. Lets trim it off.
SET @SQL = LEFT(@SQL,LEN(@SQL)-6);
-- Lets do an Order By. You can pick between Count and Table Name by picking which
-- line to execute below.
SET @SQL = @SQL + ' ORDER BY Count';
--SET @SQL = @SQL + ' ORDER BY Table_Name';
-- Now that our Dynamic SQL statement is ready, lets execute it.
EXEC (@SQL);
GO
mensaje de error:
Error: Msg 102, Level 15, State 1, Line 1 Incorrect syntax near '('.
¿Cómo se puede arreglar, ya sea que SQL o restablecer la identidad de todas las tablas a su estado original?
Gracias
Bueno, tengo como 80 mesas con semilla por defecto 101 y entonces como 50 con 10001 y otro 50 por 1. así que traté de hacer un poco de bucle en SQL, sino que tratará de hacer lazo con PHP que podría ser más fácil . – DanSpd
@DanSpd: actualicé mi respuesta con su forma definitiva y absolutamente exacta de hacerlo. :-) Disfruta. –
Muchas gracias.Hace mi trabajo mucho más fácil :) Los amo muchachos – DanSpd