ฐานข้อมูล Azure SQL Bacpac Local Restore


130

ฉันได้สร้างการสำรองข้อมูล BACPAC ของฐานข้อมูล Azure SQL ของฉันโดยใช้ตัวเลือก "ส่งออก" ภายใน Azure Management Console

หลังจากดาวน์โหลดสิ่งนี้ลงในเครื่องของฉันฉันติดขัดเล็กน้อยเกี่ยวกับวิธีที่ฉันสามารถกู้คืนสิ่งนี้ไปยังอินสแตนซ์ SQL Server ในเครื่องได้ ฉันเจอเครื่องมือ DacImportExportCli แต่ไม่พบตัวอย่างของการกู้คืนภายในเครื่อง

นอกจากนี้หากใครได้เขียนสคริปต์ที่ทำสิ่งนี้ (สามารถกำหนดเวลาได้) จะดีมาก


8
นี่อาจเป็นสิ่งที่ SQL Server 2012 แต่ใน SQL Server Management Studio ถ้าฉันคลิกขวาที่โฟลเดอร์ฐานข้อมูลของเซิร์ฟเวอร์ภายในเครื่องของฉันและเลือกนำเข้าแอปพลิเคชันระดับข้อมูลที่เริ่มตัวช่วยสร้างที่อ่านในไฟล์ BACPAC เพื่อสร้างสำเนาของฐานข้อมูล Azure ของฉัน . ตัวช่วยสร้างยังสามารถเชื่อมต่อโดยตรงกับ blob-store เพื่อรับไฟล์ BACPAC หากคุณไม่ต้องการคัดลอกไฟล์ในเครื่องก่อน
dumbledad

คุณเคยคิดออกหรือไม่?
เนท

3
@dumbledad ฉันเชื่อว่ามันเป็นสิ่งที่ SQL 2012 SSMS ในการนำเข้าแอปพลิเคชัน Data-tier 2008R2 ดูเหมือนจะมีความสามารถในการส่งออก DACPAC เท่านั้นไม่เห็นตัวเลือกการนำเข้า
jamiebarrow

คำตอบ:


179

สามารถทำได้ง่ายๆผ่าน SQL Server Management Studio 2012

  1. คลิกขวาที่โหนดConnection> Databasesและเลือก " Import Data-tier application ... "
  2. เลือก " ถัดไป " ในขั้นตอนแนะนำ
  3. ป้อนคำอธิบายภาพที่นี่
  4. เรียกดูหรือเชื่อมต่อกับบัญชีที่เก็บข้อมูลที่เก็บข้อมูลสำรองไว้

2
สมบูรณ์แบบนี้ เครื่องมือ RedGate อาจเป็นรอยได้ ฉันดีใจที่เห็นตัวเลือกที่รองรับ MS
gilly3

2
มันทำงานกับ sql express 2012 ได้หรือไม่? เนื่องจากฉันมีข้อความแสดงข้อผิดพลาดต่อไปนี้: Count not load schema model from package. (Microsoft.SqlServer.Dac) ------------------------------ ข้อมูลเพิ่มเติม: ข้อผิดพลาดภายใน ประเภทแพลตฟอร์มเป้าหมายภายใน SqlAzureDatabaseSchemaProvider ไม่รองรับไฟล์สคีมาเวอร์ชัน '2.5' (ไฟล์: C: \ Users \ xxxxx \ Downloads \ dbname-2013-10-10-20-2.bacpac) (Microsoft.Data.Tools.Schema.Sql)
Antoine Meltzheim

@ElTone ฉันเพิ่งกู้คืน bacpac โดยตรงจาก Azure Storage ไปยังฐานข้อมูล SQL Server Express 2012 ในเครื่องของฉันโดยใช้ Management Studio ไม่เห็นข้อผิดพลาดใด ๆ และดูเหมือนว่าข้อมูลจะอยู่ที่นั่น มีคนกล่าวว่าการติดตั้ง SQL Server Data Tools เวอร์ชันที่ใหม่กว่าช่วยพวกเขาได้ (แต่ไม่ได้อ้างถึง Management Studio) social.msdn.microsoft.com/Forums/windowsazure/en-US/…
Juha Palomäki

@Juha Palomäki Correct: การติดตั้ง SSDT เวอร์ชันล่าสุดช่วยแก้ปัญหาได้ ตอนนี้ดีขึ้นแล้ว
Antoine Meltzheim

4
ดูเหมือนว่าจะมีข้อ จำกัด บางประการเกี่ยวกับขนาดไฟล์แบ็กแพ็กที่คุณสามารถนำเข้าด้วย Management Studio ได้ หากคุณกดข้อยกเว้น OutOfMemory ให้ตรวจสอบคำตอบของ Flea เกี่ยวกับวิธีใช้เครื่องมือบรรทัดคำสั่ง SqlPackage.exe
Juha Palomäki

52

ฉันต้องการส่งออกฐานข้อมูล SQL Azure จากนั้นนำเข้าสู่เซิร์ฟเวอร์ SQL 2008 R2 ภายในเครื่อง (โปรดทราบว่าฉันใช้ Visual Studio 2010 ด้วย) Microsoft ออกนอกลู่นอกทางเพื่อทำให้งานนี้เป็นงานที่เจ็บปวดอย่างไรก็ตามฉันสามารถทำได้โดยทำสิ่งต่อไปนี้:

  1. ไปที่ลิงค์นี้http://msdn.microsoft.com/en-us/jj650014และติดตั้ง SQL Server Data Tools สำหรับ Visual Studio 2010

  2. สิ่งนี้จะติดตั้งในไดรฟ์ในเครื่องของคุณ ในกรณีของฉันนี่คือที่ที่มัน: C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ DAC \ bin

  3. เรียกดูผ่านทางบรรทัดคำสั่งหรือ powershell

  4. คุณจะต้องการเรียกใช้ SqlPackage.exe

  5. เปิดลิงค์นี้เพื่อดูรายการตัวเลือกพารามิเตอร์ทั้งหมดสำหรับ SqlPackage.exe ( http://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx )

  6. นี่คือบรรทัดคำสั่งของฉันที่ฉันต้องดำเนินการเพื่อนำเข้าไฟล์. bacpac ไปยังเซิร์ฟเวอร์ SQL 2008 R2 ในเครื่องของฉัน:

    . \ SqlPackage.exe / a: นำเข้า /sf:C:\mydatabasefile.bacpac / tdn: NorthWind / tsn: BINGBONG

/tdnคือชื่อของฐานข้อมูลที่คุณต้องการให้ไฟล์ bacpac ของคุณกู้คืน /tsnคือชื่อของเซิร์ฟเวอร์ SQL ของคุณ

คุณสามารถดูคำอธิบายพารามิเตอร์เหล่านี้ได้จากลิงค์ # 5


สิ่งนี้สามารถทำได้ง่ายยิ่งขึ้นหากคุณติดตั้ง SSMS 2012 คุณสามารถใช้วิซาร์ดตามที่ @Josiah อธิบายไว้ข้างต้นได้แม้จะใช้เซิร์ฟเวอร์ 2008 R2 ก็ตาม
DanO

2
ฉันใช้เวลาค้นหาโซลูชันนี้นานมากจนสามารถดาวน์โหลดสตูดิโอการจัดการทั้งหมดในปี 2014 ได้
Santhos

SqlPackage แขวนอยู่สำหรับฉันในขั้นตอน 'การอัปเดตฐานข้อมูล' จนกว่าฉันจะทิ้งฐานข้อมูลเป้าหมายอย่างสมบูรณ์
michael_hook

10

คุณสามารถกู้คืน BACPAC ได้โดยใช้เครื่องมือฝั่งไคลเอ็นต์ วิดีโออยู่ที่นี่:

http://dacguy.wordpress.com/2011/09/09/importexport-services/

เครื่องมือมีอยู่ที่นี่:

http://sqldacexamples.codeplex.com/documentation


เครื่องมือนี้ควรจะรองรับการนำเข้า bacpac ลงในฐานข้อมูลภายในเครื่อง ตัวอย่างเช่นการนำเข้าแบ็กแพ็กไปยังฐานข้อมูลโดยใช้ Windows Auth จะมีลักษณะดังนี้ "DacCli -S myserver -E -D nw_restored -F northwind.bacpac -I" อย่างไรก็ตามรายการ codeplex ของแอสเซมบลีที่จำเป็นล้าสมัย - ไม่มีลิงก์ใดที่ใช้งานได้ดังนั้นเครื่องมือจะไม่ทำงาน (มีข้อกำหนดเบื้องต้นสำหรับส่วนประกอบ CTP ของ SQL 2012 บางส่วน)
David Airapetyan

ฉันมีส่วนประกอบทั้งหมดที่ติดตั้งในเครื่องของฉันดังนั้นฉันจึงลองนำเข้า bacpac ด้วย DacCli - มันใช้งานได้ (ดูบรรทัดคำสั่งในความคิดเห็นก่อนหน้าของฉัน) ใช้เวลาประมาณ 20 นาทีสำหรับ bacpac 100MB
David Airapetyan

7

ดูเหมือนคำอธิษฐานของฉันได้รับคำตอบ Redgate เปิดตัวเครื่องมือสำรองข้อมูล SQL Azure ฟรีแล้ววันนี้ - http://www.red-gate.com/products/dba/sql-azure-backup/download


ปัญหาหลายประการ: 1. การพัฒนาที่ใช้งานอยู่ของ SQL Azure Backup หยุดลงในขณะนี้ (หมายเหตุนี้จะแสดงขึ้นเมื่อคุณเรียกใช้เครื่องมือเวอร์ชันล่าสุด) 2. เมื่อสำรองข้อมูลโดยตรงจาก Azure ไปยัง SQL ภายในดูเหมือนว่าจะไม่ผ่าน bacpac แต่ใช้สคีมา / สำเนาข้อมูลที่ปลูกในบ้านแทน จากประสบการณ์ของฉันมันช้ามาก 3. เพื่อต่อยอดจากจุดก่อนหน้ากลไกนี้มีข้อผิดพลาด - ฉันมีหลายตารางที่ไม่สามารถถ่ายโอนได้เนื่องจากเครื่องมือไม่สามารถตรวจจับคีย์เฉพาะได้
David Airapetyan

2
คำตอบนี้ควรได้รับการอัปเดตหรือไม่ใช่คำตอบที่ยอมรับอีกต่อไป เครื่องมือที่เชื่อมโยงได้กลายเป็นโซลูชัน "ระบบคลาวด์" และไม่รองรับการสำรองข้อมูลในเครื่อง
Timothy Strimple

2
เครื่องมือสำรองยังมีอยู่ที่red-gate.com/products/dba/sql-azure-backup/Discontinued
Ben Foster

5

หากคุณใช้ SSMS 2012 ก็ทำได้ง่ายเพียงแค่คลิกขวาที่โฟลเดอร์ Databases ใต้เซิร์ฟเวอร์ใน Object Explorer แล้วเลือก "Import Data-tier Application ... "

มีจุดหนึ่งบนท้องถนนที่ต้องระวัง: ณ วันที่ 26 มีนาคม 2013 (เมื่อฉันต้องการค้นหาวิธีการทำสิ่งนี้ด้วยตัวเอง) เมื่อคุณส่งออก. bacpac จาก Azure ไฟล์นั้นจะถูกดาวน์โหลดเป็นไฟล์. zip ไม่ใช่ไฟล์. bacpac และกล่องโต้ตอบไฟล์ที่เปิดโดยปุ่มเรียกดูในตัวช่วยสร้างการนำเข้าจะแสดงเฉพาะ * .bacpac หรือ. ในตัวกรองไฟล์ซึ่งหมายความว่าไม่รองรับ. zip แต่ถ้าคุณเปลี่ยนกรองเพื่อ เลือก. zip ที่คุณดาวน์โหลดแล้วคลิกถัดไปวิซาร์ดจะดำเนินการตามปกติ


2
นี่คือคำตอบที่ถูกต้อง ตอนนี้คุณสามารถติดตั้ง SSMS 2016 เวอร์ชันสแตนด์อโลนได้ฟรีและมีคุณสมบัติเหล่านี้ทั้งหมด
Aaron

3

นี่คือสคริปต์สำหรับกู้คืนไฟล์ bacpac จำนวนมากพร้อมกัน: Bulk Restore ไฟล์ bacpac ในเครื่อง

cd [FOLDERPATH]
$goodlist = dir
cd 'C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin'
foreach($i in $goodlist){ $name = $i.Name; $namer = $i.Name.Substring(0, $i.Name.length - 7); .\SqlPackage.exe /a:Import /sf:[FOLDERPATH]\$name /tdn:$namer /tsn:[SERVERNAME] }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.