การสำรองข้อมูลระดับตาราง


คำตอบ:


89

คุณไม่สามารถใช้คำสั่งในการสำรองข้อมูลตารางเดียวเว้นแต่ของหลักสูตรตารางในคำถามที่จะจัดสรรให้เป็นของตัวเองBACKUP DATABASEFILEGROUP

สิ่งที่คุณทำได้ตามที่คุณแนะนำคือส่งออกข้อมูลตารางเป็นไฟล์ CSV ตอนนี้เพื่อให้ได้คำจำกัดความของตารางของคุณคุณสามารถ 'สคริปต์ออก' CREATE TABLEสคริปต์ได้

คุณสามารถทำได้ภายใน SQL Server Management Studio โดย:

คลิกขวาที่ฐานข้อมูล> งาน> สร้างสคริปต์

จากนั้นคุณสามารถเลือกตารางที่คุณต้องการเขียนสคริปต์และเลือกรวมวัตถุที่เกี่ยวข้องเช่นข้อ จำกัด และดัชนี

ในการสั่งซื้อที่จะได้รับDATAพร้อมกับเพียงแค่schemaคุณได้มีให้เลือกAdvancedในแท็บการตั้งค่าตัวเลือกการเขียนสคริปต์และในGENERALส่วนของการตั้งค่าTypes of data to scriptเลือกSchema and Data

หวังว่านี่จะช่วยได้ แต่อย่าลังเลที่จะติดต่อเราโดยตรงหากคุณต้องการความช่วยเหลือเพิ่มเติม


'ตัวช่วยสร้างการเผยแพร่ฐานข้อมูล' จะดำเนินการตามขั้นตอนที่ฉันระบุไว้โดยอัตโนมัติ
John Sansom

25
จอห์นไม่ลืมที่จะพูดถึงว่าเพื่อให้ได้รับข้อมูลพร้อมมีเพียงคีมาคุณได้มีให้เลือกAdvancedในแท็บการตั้งค่าตัวเลือกการเขียนสคริปต์และในส่วนทั่วไปตั้งค่าเลือกTypes of data to script Schema and Dataนั่นไม่ชัดเจนในครั้งแรกที่ฉันทำ
Alex C

เคล็ดลับของอเล็กซ์สำคัญมาก นอกจากนี้ยังมีวิธีเขียนสคริปต์แทนการใช้เมนูใน SQL Server หรือไม่?
sooprise

1
คุณควรจะทำได้โดยใช้ PowerShell และ SMO ร่วมกัน ดูบทความนี้จาก Phil Factor เป็นแนวทาง: simple-talk.com/sql/database-administration/…
John Sansom

@AlexC ขอบคุณ! ช่วยให้ฉันปวดหัว :)
Simon Whitehead

55

ฉันใช้ยูทิลิตี้สำเนาจำนวนมากเพื่อสำรองข้อมูลระดับตาราง

เพื่อส่งออก:

bcp.exe "select * from [MyDatabase].dbo.Customer " queryout "Customer.bcp" -N -S localhost -T -E

นำเข้า:

bcp.exe [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000

อย่างที่คุณเห็นคุณสามารถส่งออกตามข้อความค้นหาใด ๆ ดังนั้นคุณสามารถสำรองข้อมูลเพิ่มเติมได้ด้วย นอกจากนี้ยังสามารถเขียนสคริปต์ได้เมื่อเทียบกับวิธีการอื่น ๆ ที่กล่าวถึงที่นี่ซึ่งใช้ SSMS


1
เพียงแค่หัวขึ้น ถ้าคุณแค่ต้องการคัดลอกตารางโดยใช้ชื่อแทนคิวรีแบบเลือกให้เปลี่ยนสคริปต์เพื่อใช้ OUT แทน QUERYOUT
Valamas

45

นี่คือขั้นตอนที่คุณต้องการ Step5 มีความสำคัญหากคุณต้องการข้อมูล ขั้นตอนที่ 2 คือที่ที่คุณสามารถเลือกแต่ละตารางได้

เวอร์ชั่นของEDIT stack นั้นอ่านไม่ออกเลย ... นี่คือภาพขนาดเต็มhttp://i.imgur.com/y6ZCL.jpg

นี่คือขั้นตอนจากคำตอบของ John Sansom


คุณใช้ SSMS อะไร @Alex C ใน SSMS2005 วิซาร์ดของฉันแตกต่างจากของคุณ
KirdApe

ฉันขอโทษฉันตอบคำถามนี้ไปหลายปีแล้ว ฉันคิดว่าฉันอาจใช้ปี 2008 ฉันเพิ่งตรวจสอบวิซาร์ดของฉันตอนนี้และคุณไม่จำเป็นต้องคลิกขั้นสูงอีกต่อไป แต่รายการทั้งหมดจากเฟรม 5 (ด้านบน) จะปรากฏเป็นหนึ่งในหน้าวิซาร์ด นอกจากนี้ตัวเลือก STRUCTURE และ DATA ยังถูกแบ่งออกเป็นตัวเลือก TRUE / FALSE สำหรับแต่ละตัวเลือกทีละรายการ โปรดแจ้งให้เราทราบหากมีอะไรเพิ่มเติมที่ฉันสามารถช่วยได้
Alex C

19

คุณสามารถเรียกใช้แบบสอบถามด้านล่างเพื่อสำรองข้อมูลของตารางที่มีอยู่ซึ่งจะสร้างตารางใหม่ที่มีโครงสร้างเดิมของตารางเก่าพร้อมกับข้อมูล

select * into newtablename from oldtablename

หากต้องการคัดลอกเฉพาะโครงสร้างตารางให้ใช้แบบสอบถามด้านล่าง

select * into newtablename from oldtablename where 1 = 2

7

สิ่งนี้คล้ายกับโซลูชันของ qntmfredแต่ใช้การถ่ายโอนข้อมูลตารางโดยตรง ตัวเลือกนี้เร็วกว่าเล็กน้อย (ดูเอกสาร BCP ):

เพื่อส่งออก:

bcp "[MyDatabase].dbo.Customer " out "Customer.bcp" -N -S localhost -T -E

นำเข้า:

bcp [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000

1
รวมถึงข้อ จำกัด หรือไม่
user3071284

4

หากคุณกำลังมองหาบางอย่างเช่น MySQL DUMPข่าวดี: SQL Server 2008 Management Studio ได้เพิ่มความสามารถดังกล่าว

ใน SSMS เพียงแค่คลิกขวาบนฐานข้อมูลในคำถามและเลือกงาน> สร้างสคริป จากนั้นในหน้าที่ 2 ของตัวช่วยสร้างตัวเลือกตรวจสอบให้แน่ใจว่าได้เลือกว่าคุณต้องการให้สคริปต์ข้อมูลด้วยและจะสร้างจำนวนเท่าใดให้กับDUMPไฟล์สำหรับคุณ



2

คุณสามารถใช้ตัวช่วยสร้างการเผยแพร่ฐานข้อมูลฟรีจาก Microsoft เพื่อสร้างไฟล์ข้อความด้วยสคริปต์ SQL (CREATE TABLE และ INSERT INTO)

คุณสามารถสร้างไฟล์ดังกล่าวสำหรับตารางเดียวและคุณสามารถ "กู้คืน" ตารางทั้งหมดรวมทั้งข้อมูลได้โดยเพียงแค่เรียกใช้สคริปต์ SQL


+1 สำหรับทุกคนที่คุ้นเคยกับสคริปต์ SQL นี่คือตัวเลือกที่คุณกำลังมองหา ยกเลิกการเลือก "สคริปต์วัตถุทั้งหมดในฐานข้อมูลที่เลือก" เพื่อเลือกแต่ละตาราง ภาพหน้าจอ: products.secureserver.net/products/hosting/…
lepe

2

ฉันไม่รู้ว่ามันจะตรงกับปัญหาที่อธิบายไว้ที่นี่หรือไม่ ฉันต้องสำรองข้อมูลส่วนเพิ่มของตาราง! (ควรคัดลอกเฉพาะข้อมูลที่แทรกใหม่เท่านั้น) ฉันเคยออกแบบแพ็คเกจ DTS ที่ไหน

  1. ฉันเรียกข้อมูลใหม่ (ตามคอลัมน์ 'สถานะ') และถ่ายโอนข้อมูลไปยังปลายทาง (ผ่าน 'งานแปลงข้อมูล')

  2. จากนั้นฉันเพิ่งอัปเดตคอลัมน์ 'สถานะ' (ผ่าน 'Execute SQL Task')

ฉันต้องแก้ไข 'เวิร์กโฟลว์' อย่างถูกต้อง


2

ใช้ตัวช่วยสร้างการนำเข้าและส่งออกเซิร์ฟเวอร์ SQL

  1. ssms
  2. เปิด Database Engine
  3. Alt. คลิกฐานข้อมูลที่มีตารางเพื่อส่งออก
  4. เลือก "งาน"
  5. เลือก "ส่งออกข้อมูล ... "
  6. ทำตามตัวช่วยสร้าง

1

ทุกรูปแบบการกู้คืนช่วยให้คุณสำรองฐานข้อมูล SQL Server ทั้งหมดหรือบางส่วนหรือแต่ละไฟล์หรือกลุ่มไฟล์ของฐานข้อมูล การสำรองข้อมูลตารางระดับไม่สามารถสร้าง

จาก: ภาพรวมการสำรองข้อมูล (SQL Server)


0

คุณอาจมีสองทางเลือกเนื่องจาก SQL Server ไม่รองรับการสำรองข้อมูลตาราง ทั้งสองอย่างจะเริ่มต้นด้วยการเขียนสคริปต์การสร้างตาราง จากนั้นคุณสามารถใช้ตัวเลือก Script Table - INSERT ซึ่งจะสร้างคำสั่งแทรกจำนวนมากหรือคุณสามารถใช้ Integration services (DTS with 2000) หรือคล้ายกันเพื่อส่งออกข้อมูลเป็น CSV หรือคล้ายกัน


0

BMC Recovery Manager (เดิมเรียกว่า SQLBacktrack) ช่วยให้สามารถกู้คืนอ็อบเจ็กต์แต่ละรายการในฐานข้อมูลได้ในเวลาเดียวกัน (หรือที่เรียกว่าตาราง) ไม่ถูก แต่ทำได้ดีมาก: http://www.bmc.com/products/proddocview/0,2832,19052_19429_70025639_147752,00.html

http://www.bmc.com/products/proddocview/0,2832,19052_19429_67883151_147636,00.html


0

หากคุณต้องการกู้คืนตารางหลังจากมีคนลบแถวออกจากตารางโดยไม่ได้ตั้งใจคุณอาจดูสแนปชอตฐานข้อมูล คุณสามารถกู้คืนตารางได้อย่างง่ายดาย (หรือส่วนย่อยของแถว) จากสแนปชอต โปรดดูhttp://msdn.microsoft.com/en-us/library/ms175158.aspx


0

แอปฟรีชื่อ SqlTableZip จะทำงานให้ลุล่วง โดยทั่วไปคุณจะเขียนข้อความค้นหาใด ๆ (ซึ่งแน่นอนว่าสามารถ [เลือก * จากตาราง]) และแอปจะสร้างไฟล์บีบอัดพร้อมข้อมูลทั้งหมดซึ่งสามารถเรียกคืนได้ในภายหลัง

ลิงก์: http://www.doccolabs.com/products_sqltablezip.html


0

Handy Backup สร้างไฟล์ดัมพ์จาก MS SQL Server โดยอัตโนมัติรวมถึง MSSQL 2005/2008 การถ่ายโอนข้อมูลเหล่านี้เป็นไฟล์ไบนารีระดับตารางซึ่งมีสำเนาที่แน่นอนของเนื้อหาฐานข้อมูลเฉพาะ

หากต้องการถ่ายโอนข้อมูลอย่างง่ายด้วย Handy Backup โปรดทำตามคำแนะนำถัดไป:

  1. ติดตั้ง Handy Backup และสร้างงานสำรองข้อมูลใหม่
  2. เลือก“ MSSQL” ในขั้นตอนที่ 2 เป็นแหล่งข้อมูล ในหน้าต่างใหม่ให้ทำเครื่องหมายฐานข้อมูลเพื่อสำรองข้อมูล
  3. เลือกจากจุดหมายปลายทางต่างๆที่คุณจะจัดเก็บข้อมูลสำรองของคุณ
  4. ในขั้นตอนที่ 4 เลือกตัวเลือกการสำรองข้อมูล“ เต็ม” ตั้งค่าการประทับเวลาหากคุณต้องการ
  5. ข้ามขั้นตอนที่ 5 เว้นแต่คุณจะต้องบีบอัดหรือเข้ารหัสไฟล์ดัมพ์ที่เป็นผลลัพธ์
  6. ในขั้นตอนที่ 6 ตั้งค่ากำหนดการสำหรับงานเพื่อสร้างการถ่ายโอนข้อมูลเป็นระยะ ๆ (มิฉะนั้นให้รันงานด้วยตนเอง)
  7. ข้ามขั้นตอนที่ 7 อีกครั้งและตั้งชื่องานของคุณในขั้นตอนที่ 8 คุณทำงานเสร็จแล้ว!

ตอนนี้เรียกใช้งานใหม่ของคุณโดยคลิกที่ไอคอนก่อนชื่อหรือรอเวลาที่กำหนด Handy Backup จะสร้างดัมพ์สำหรับฐานข้อมูลของคุณโดยอัตโนมัติ จากนั้นเปิดปลายทางสำรองของคุณ คุณจะพบโฟลเดอร์ (หรือสองโฟลเดอร์) ที่มีข้อมูลสำรอง MS SQL ของคุณ โฟลเดอร์ดังกล่าวจะมีไฟล์ดัมพ์ระดับตารางซึ่งประกอบด้วยตารางไบนารีและการตั้งค่าบางส่วนที่บีบอัดเป็น ZIP เดียว

ฐานข้อมูลอื่น ๆ

Handy Backup สามารถบันทึกดั๊มพ์สำหรับ MySQL, MariaDB, PostgreSQL, Oracle, IBM DB2, Lotus Notes และฐานข้อมูล SQL ทั่วไปที่มีไดรเวอร์ ODBC ฐานข้อมูลเหล่านี้บางส่วนต้องการขั้นตอนเพิ่มเติมเพื่อสร้างการเชื่อมต่อระหว่าง DBMS และ Handy Backup

เครื่องมือที่อธิบายไว้ข้างต้นมักจะดัมพ์ฐานข้อมูล SQL เป็นลำดับคำสั่ง SQL ระดับตารางทำให้ไฟล์เหล่านี้พร้อมสำหรับการแก้ไขด้วยตนเองที่คุณต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.