SQL Server Kopiera ett bord till en annan med lagrad procedur

När du ändrar en viktig tabell i databasen, säkerhetskopierar användaren ofta bordet genom att göra en kopia av originalbordet med ett annat namn. Genom att använda en lagrad procedur gör denna process enkel och bekväm att återanvända.

Data kan vara ovärderliga. Ett sätt att bäst skydda är att duplicera bordet. Låt oss gå igenom ett exempel.

Syntaxen för ett grundläggande tabellkopia kommando skulle vara följande:

Välj * In original_tablename_backup Från original_tablename;

I vårt exempel kommer vi att ha ett bord som heter emp i vår databas. Vi vill göra en kopia av originalet emp tabell. Den här frågan kommer att skapa en emp_backup tabell. Det kommer att hota ett fel om emp_backup bord finns redan.

Välj * till emp_backup från emp;

Eftersom vi behöver utföra denna typ av frågor många gånger kan vi använda en lagrad procedur för att skapa en kopia av bordet. En lagrad procedur är inget annat än sparade SQL som kan ringas upprepade gånger för att utföra liknande funktioner.

SKAPA proc BACKUP_TB @tbname AS varchar (MAX) AS BEGIN SET nocount ON; DECLARE @query AS varchar (MAX) SET @query = 'välj * till' [email protected] + '_ backup från' [email protected] + "; EXEC (@query) SET nocount OFF; END

Den här lagrade proceduren tar det ursprungliga tabellnamnet som en parameter och det kommer att skapa det ursprungliga tabellnamnet understrykningssäkerhetstabell som en kopia av originalbordet.

Låt oss se hur du utför den här "BACKUP_TB" lagrade proceduren med tabellnamn som parameter.

Antag att vi har avd bord i vår databas, och vi vill göra en kopia av avd bord som namn dept_backup.

EXEC BACKUP_TB DEPT;

Vi utför vår procedur 'BACKUP_TB' och skickar tabellnamnet en parameter. Vår lagrade procedur kommer att skapa dept_backup bord som en kopia av originalet avd tabell.

Om vi ​​har ett annat schema namn i vår databas och vi gör en kopia av tabellen under AbcLtd schema, måste vi använda parentes för att analysera '.' symbol som en parameter med vårt backup_tb-procedur som följande:

EXEC BACKUP_TB [AbcLtd.salary];