ฉันต้องการสำรองข้อมูลของตารางเฉพาะที่มีอยู่ในฐานข้อมูลของฉันใน.bak
ไฟล์และสิ่งเหล่านี้ควรทำโดยใช้สคริปต์ T-SQL
ฉันต้องการสำรองข้อมูลของตารางเฉพาะที่มีอยู่ในฐานข้อมูลของฉันใน.bak
ไฟล์และสิ่งเหล่านี้ควรทำโดยใช้สคริปต์ T-SQL
คำตอบ:
ประเภทการสำรองข้อมูลขึ้นอยู่กับ SQL Server Recovery Model ทุกรูปแบบการกู้คืนช่วยให้คุณสำรองฐานข้อมูล SQL Server ทั้งหมดหรือบางส่วนหรือแต่ละไฟล์หรือกลุ่มไฟล์ของฐานข้อมูล ไม่สามารถสร้างการสำรองข้อมูลระดับตารางได้ไม่มีตัวเลือกดังกล่าว แต่มีวิธีแก้ปัญหาสำหรับสิ่งนี้
การสำรองข้อมูลของตาราง SQL Server เป็นไปได้ใน SQL Server มีหลายทางเลือกในการสำรองข้อมูลตารางใน SQL Server
ที่นี่ฉันจะอธิบายเฉพาะส่วนที่เหลือแรกที่คุณอาจจะรู้
วิธีที่ 1 - สำรองตาราง sql โดยใช้ BCP (BULK COPY PROGRAM)
ในการสำรองข้อมูลตาราง SQL ชื่อ "Person.Contact" ซึ่งอยู่ใน SQL Server AdventureWorks เราจำเป็นต้องเรียกใช้สคริปต์ต่อไปนี้
-- SQL Table Backup
-- Developed by DBATAG, www.DBATAG.com
DECLARE @table VARCHAR(128),
@file VARCHAR(255),
@cmd VARCHAR(512)
SET @table = 'AdventureWorks.Person.Contact' -- Table Name which you want to backup
SET @file = 'C:\MSSQL\Backup\' + @table + '_' + CONVERT(CHAR(8), GETDATE(), 112) -- Replace C:\MSSQL\Backup\ to destination dir where you want to place table data backup
+ '.dat'
SET @cmd = 'bcp ' + @table + ' out ' + @file + ' -n -T '
EXEC master..xp_cmdshell @cmd
เอาท์พุท
บันทึก -
อีกวิธีหนึ่งคุณสามารถเรียกใช้ BCP ผ่านทางพรอมต์คำสั่งและพิมพ์คำสั่งต่อไปนี้ใน command prompt การดำเนินการทั้งสองดำเนินกิจกรรมเดียวกัน แต่ฉันชอบวิธีการดังกล่าวข้างต้นเป็นที่บันทึกประเภทในการเปิดคำสั่งและประเภท
bcp AdventureWorks.Person.Contact out C:\MSSQL\Backup\AdventureWorks.Person.Contact_20120222.dat -n -T
วิธีที่ 1:
หากคุณเกี่ยวข้องกับข้อมูลในตารางเท่านั้นและจะใช้ภายในฐานข้อมูลและเซิร์ฟเวอร์เดียวกันคุณสามารถใช้แบบสอบถามด้านล่างเพื่อสำรองข้อมูลของตารางที่เลือก:
SELECT * INTO newtable1
FROM originalTable1
--- สำหรับตารางที่ 2
SELECT * INTO newtable2
FROM originalTable2
และอื่น ๆ ... สำหรับจำนวน n ตาราง
คำสั่งนี้จะสร้างตารางที่เรียกว่า newtable1, newtable1, .. ดังนั้นคุณไม่จำเป็นต้องสร้างมันก่อนหน้านี้
หมายเหตุ * วิธีการนี้ใช้เวลาในการสำรองข้อมูลค่อนข้างเร็ว แต่ข้อเสียเปรียบที่สำคัญคือจะไม่ใช้คีย์, ดัชนีและข้อ จำกัด ของตารางและการสำรองข้อมูลจะถูกเก็บไว้ในฐานข้อมูลไม่ใช่ที่ภายนอกไฟล์
วิธีที่ 2:
หากคุณต้องการสำรองข้อมูลตารางไปยังเซิร์ฟเวอร์อื่นสำหรับโซลูชันการกู้คืนจากความเสียหายหรือการป้องกันการสูญหายของข้อมูลคุณสามารถสคริปต์ตารางโดยใช้ตัวเลือกสร้างสคริปต์จากงาน
ก่อนอื่นให้คลิกขวาที่ฐานข้อมูลที่มีตารางที่คุณต้องการสำรองข้อมูลและเลือกงาน -> สร้างสคริปต์
เลือกฐานข้อมูลของคุณจากรายการที่ต้องสำรองข้อมูลตาราง
หน้าจอถัดไปที่ปรากฏคือตัวเลือกสคริปต์
เลื่อนลงไปที่ตัวเลือกสคริปต์จนกว่าคุณจะเห็นตัวเลือกตาราง / มุมมอง เราต้องการสิ่งต่อไปนี้เป็นจริง: ตรวจสอบข้อ จำกัด ข้อมูลสคริปต์คีย์ต่างประเทศคีย์หลักทริกเกอร์ & คีย์ที่ไม่ซ้ำกัน (หรือคุณสามารถเลือกสิ่งที่คุณต้องการแน่นอน) เลือกถัดไปและเราจะนำเสนอด้วยหน้าจอเลือกประเภทวัตถุ
เลือกตารางและกดถัดไป สุดท้ายเลือกตารางหรือตารางที่คุณต้องการสำรองข้อมูลและกดถัดไป
วิธีที่ 3:
คุณสามารถใช้ยูทิลิตี bcpสำหรับการสำรองตารางได้เช่นกัน
คุณไม่สามารถสำรองข้อมูลตารางที่เฉพาะเจาะจงไปยัง.bak
ไฟล์คุณสามารถส่งออกไปยัง csv หรือสคริปต์ออกหรือใช้bcp
เพื่อวางลงในไฟล์
คุณสามารถทำอะไรได้บ้างหากคุณต้องการสำรองข้อมูลตารางที่เฉพาะเจาะจง (และตารางเหล่านั้นเหมือนกันเสมอ) จะย้ายตารางเหล่านั้นไปยังfile group
กลุ่มไฟล์ที่แยกต่างหากและสำรองข้อมูล
โปรดดูข้อมูลไฟล์และกลุ่มไฟล์สำรอง
ตัวอย่างเช่นหากคุณต้องการสำรองไฟล์หรือกลุ่มไฟล์โดยใช้ T-SQL คุณสามารถใช้ (จากลิงค์)
--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
FILEGROUP = 'SalesGroup1',
FILEGROUP = 'SalesGroup2'
TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck';
GO
และ
--Backup the files in the SalesGroup1 secondary filegroup.
BACKUP DATABASE Sales
FILE = 'SGrp1Fi2',
FILE = 'SGrp2Fi2'
TO DISK = 'G:\SQL Server Backups\Sales\SalesGroup1.bck';
GO
การสร้างตามวิธีที่ 1 จากการตอบสนองของ KASQLDBA:
สร้างฐานข้อมูลแยกต่างหากเพื่อเก็บสำเนาของตารางที่สำรองไว้ ปรับเปลี่ยนแบบสอบถามที่ให้ของ KASQLDBA เพื่อให้คุณเลือกจากตารางต้นฉบับของคุณและคัดลอกไปยังฐานข้อมูลสำรอง
SELECT * INTO MyNewDatabase.dbo.newtable1
FROM OriginalDatabase.dbo.originalTable1
--- For table 2
SELECT * INTO MyNewDatabase.dbo.newtable2
FROM OriginalDatabase.dbo.originalTable2
คุณสามารถสร้างสคริปต์ที่วางตารางในฐานข้อมูลใหม่จากนั้นเรียกใช้ตัวเลือกลงในคำสั่งสำหรับทุกตารางที่ต้องการ หากคุณต้องการให้ดัชนีและวัตถุอื่นพร้อมใช้งานคุณสามารถสร้างดัชนีเหล่านั้นบนฐานข้อมูลใหม่ของคุณและตัดทอนตารางก่อนที่จะเติมข้อมูลอีกครั้ง หากคุณต้องการตัดทอนคุณจะต้องใช้คำสั่งแทรกแทนการเลือกลงใน
ตัวเลือกนี้จะให้วิธีการในการสร้างไฟล์. BAK ให้กับคุณ คุณเพียงแค่เรียกใช้คำสั่งฐานข้อมูลสำรองหลังจากที่คุณเติมข้อมูลตารางในฐานข้อมูลใหม่
การใช้คุณสมบัติการส่งออกจำนวนมากของ SSMS นี่เป็นวิธีที่ดีที่สุดและง่ายที่สุดที่กล่าวถึง
ตัวช่วยสร้างการนำเข้าและส่งออกของ SQL Server : ตัวช่วยสร้างการนำเข้าและส่งออกของ SQL Server จัดเตรียมส่วนต่อประสานผู้ใช้แบบกราฟิกลงบนแพ็คเกจ SQL Server Integration Services (SSIS) เมื่อสร้างแพคเกจสามารถเป็นอัตโนมัติเพื่อให้ทำงานตามกำหนดเวลา สามารถกำหนดค่าและแก้ไขเพิ่มเติมได้โดยใช้ SQL Server Data Tools (SSDT)
ในการเริ่มต้นให้เปิดตัวช่วยสร้างการนำเข้าและส่งออกคลิกขวาที่ฐานข้อมูลและเลือกเมนูย่อยงาน -> ส่งออกคำสั่งข้อมูล
อีกวิธีหนึ่งคือการใช้สคริปต์ / sproc: DumpDataFromTable.sql จาก: https://github.com/Zindur/MSSQL-DumpTable/tree/master/Scripts
EXECUTE [dbo].[DumpDataFromTable] @SchemaName = 'dbo', @TableName = 'Table', @PathOut = 'c:\temp\Scripts'
คุณต้องผ่าน: ชื่อสคีมาและชื่อตารางจากนั้นพา ธ เอาต์พุตที่สคริปต์ที่สร้างขึ้นจะถูกบันทึกไว้ (โฟลเดอร์โน้ตจะต้องสร้าง / มีอยู่แล้วและ sql จะต้องได้รับอนุญาตให้ดูความคิดเห็นใน sproc)
และถ้าคุณต้องการคุณสามารถเพิ่มเงื่อนไขลงในตาราง (ตัวกรองจะต้องเริ่มต้นด้วยและชั่วขณะ)
สำรองข้อมูลตารางเดียวด้วยข้อมูลจากฐานข้อมูลใน SQL Server 2008:
SELECT * INTO [dbo].[tbl_NewTable]
FROM [dbo].[tbl_OldTable]