Scenariusz:
Pracujesz jako programista SQL Server, musisz dostarczyć kilka skryptów aktualizujących lub usuwających, aby zaktualizować lub usunąć dane z tabeli. Chcesz wykonać kopię zapasową tych rekordów lub jeśli tabela jest mała, możesz chcieć wykonać kopię zapasową całej tabeli przed wykonaniem uruchom instrukcje aktualizacji lub usunięcia.Jak wykonać kopię zapasową całej tabeli lub tylko rekordów, na których chcesz uruchomić aktualizację lub usunąć instrukcje?
Rozwiązanie:
SQL Server nie zapewnia kopii zapasowej na poziomie tabeli. Kiedy mówimy, że chcemy wykonać kopię zapasową tabeli, mówimy o wykonaniu kopii istniejącej tabeli z rekordami.Powiedzmy, że mamy dbo.Tablica klienta z kilkoma rekordami i chcemy utworzyć tabelę zapasową dbo.Customber_Bkp_TodayDate, możemy użyć poniższego skryptu
Najpierw utwórz tabelę dbo.Customer z przykładowymi rekordami
USE yourDatabaseName Go Create Table dbo.Customer( Id int identity(1,1), FName VARCHAR(50), LName VARCHAR(50), Age int, DOB Date, Salary Numeric(6,2)) --Use the Insert Into with Values single Statement Insert into dbo.Customer Values('Aamir','Shahzad',36,'1980-01-01',5000.50), ('Raza','M',33,'1983-03-03',4900.34), ('John','Smith',26,'1990-04-05',5000.50)
Teraz utwórzmy tabelę kopii zapasowych dbo.Customber_Bkp_TodayDate ze wszystkimi rekordami, które są obecne w dbo.Customer.
Select * into dbo.Customber_Bkp_20160507 from dbo.Customer
Aby utworzyć nową tabelę z rekordami, musisz użyć funkcji Into NewTable ze OldTable, jak pokazano powyżej.
Jeśli interesuje nas tylko kopiowanie rekordów, w których FName='Aamir' nasze zapytanie będzie wyglądać tak poniżej.
Select * into dbo.Customber_Bkp_20160507_OnlyAamir from dbo.Customer where FName='Aamir'
Uruchom powyższe skrypty i sprawdź, czy tabele zostały utworzone z wymaganymi rekordami.
Jak wykonać kopię zapasową rekordów do nowej tabeli z istniejącej tabeli SQL Server w SQL Server |
Skrypty użyte w demonstracji wideo:
--Take the backup or create table for all records Select * into [YourDBName].dbo.Customer_20160510 from [dbo].[Customer] --Create table for selected records Select * into [YourDBName].dbo.Customer_20160510_TwoRecords from [dbo].[Customer] where id<=2 --Check if table is created successfully Select * From [YourDBName].dbo.Customer_20160510_TwoRecords Select * from [dbo].[Customer] --Update Records in current table update [dbo].[Customer] set LName=LName+' Test' where id<=2 --Update records in current table from backup table update d set d.LName=s.LName from [YourDBName].dbo.Customer_20160510_TwoRecords s inner join [dbo].[Customer] d on s.id=d.id
Prezentacja wideo:jak szybko utworzyć nową tabelę z istniejącej tabeli z danymi w SQL Server