Azure SQL Database Bacpac Pemulihan Lokal


130

Saya telah membuat cadangan BACPAC pada Azure SQL Database saya menggunakan opsi "Ekspor" dalam Konsol Manajemen Azure.

Setelah mengunduh ini ke mesin saya, saya agak terjebak pada bagaimana saya bisa mengembalikan ini ke contoh SQL Server lokal. Saya menemukan alat DacImportExportCli tetapi tidak dapat menemukan contoh pemulihan lokal.

Juga jika ada yang telah menulis skrip yang melakukan ini (sehingga dapat dijadwalkan) itu akan luar biasa.


8
Ini mungkin SQL Server 2012, tetapi di SQL Server Management Studio jika saya mengklik kanan folder database server lokal saya dan memilih Impor Aplikasi Data Tier yang memulai wizard yang berbunyi di file BACPAC untuk menghasilkan salinan database Azure saya . Wizard juga dapat terhubung langsung ke blob-store untuk mendapatkan file BACPAC jika Anda lebih suka tidak menyalinnya secara lokal terlebih dahulu.
dumbledad

Apakah Anda pernah menemukan ini?
Nate

3
@dumbledad Saya percaya ini adalah SQL 2012 SSMS untuk mengimpor aplikasi Data-tier, 2008R2 sepertinya hanya memiliki kemampuan untuk mengekspor DACPAC, tidak dapat melihat opsi impor.
jamiebarrow

Jawaban:


179

Ini dapat dilakukan hanya melalui SQL Server Management Studio 2012

  1. Klik kanan pada node Connection> Databases dan pilih " Impor aplikasi Data-tier ... "
  2. Pilih " Next " pada langkah pengantar.
  3. masukkan deskripsi gambar di sini
  4. Jelajahi, atau hubungkan ke akun penyimpanan tempat cadangan disimpan.

2
Ini sempurna. Alat RedGate bisa flakey. Saya senang melihat opsi yang didukung MS.
gilly3

2
Apakah ini berfungsi dengan sql express 2012? Karena saya memiliki pesan kesalahan berikut: Hitung tidak memuat model skema dari paket. (Microsoft.SqlServer.Dac) ------------------------------ INFORMASI TAMBAHAN: Kesalahan Internal. Platform target internal jenis SqlAzureDatabaseSchemaProvider tidak mendukung versi file skema '2.5'. (File: C: \ Users \ xxxxx \ Downloads \ dbname-2013-10-10-20-2.bacpac) (Microsoft.Data.Tools.Schema.Sql)
Antoine Meltzheim

@ ElTone Saya baru saja mengembalikan bacpac langsung dari Azure Storage ke database SQL Server Express 2012 lokal saya menggunakan Management Studio. Tidak melihat kesalahan dan data sepertinya ada di sana. Seseorang menyebutkan bahwa menginstal versi terbaru dari SQL Server Data Tools membantu mereka (tetapi mereka tidak merujuk ke Management Studio) social.msdn.microsoft.com/Forums/windowsazure/en-US/…
Juha Palomäki

@Juha Palomäki Benar: Menginstal versi terbaru SSDT memecahkan masalah. Semua lebih baik sekarang.
Antoine Meltzheim

4
Tampaknya ada beberapa batasan pada seberapa besar file bacpac yang dapat Anda impor dengan Management Studio. Jika Anda menekan pengecualian OutOfMemory, periksa jawaban Flea tentang cara menggunakan alat baris perintah SqlPackage.exe
Juha Palomäki

52

Saya perlu mengekspor database SQL Azure dan kemudian mengimpornya ke server SQL 2008 R2 lokal (Catatan saya juga menggunakan Visual Studio 2010). Microsoft tentu saja berusaha keras untuk menjadikan ini tugas yang menyakitkan, namun, saya bisa melakukannya dengan melakukan hal berikut:

  1. Ambil tautan ini http://msdn.microsoft.com/en-us/jj650014 dan instal Alat Data Server SQL untuk Visual Studio 2010

  2. Ini akan dipasang di drive lokal Anda. Dalam kasus saya di sini adalah di mana meletakkannya: C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ DAC \ bin

  3. Jelajahi ini melalui baris perintah atau PowerShell

  4. Anda akan ingin menjalankan SqlPackage.exe

  5. Buka tautan ini untuk melihat daftar semua opsi parameter untuk SqlPackage.exe ( http://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx )

  6. Berikut ini adalah baris perintah saya yang perlu saya jalankan untuk mengimpor file .bacpac ke server SQL 2008 R2 lokal saya:

    . \ SqlPackage.exe / a: Impor /sf:C:\mydatabasefile.bacpac / tdn: NorthWind / tsn: BINGBONG

/tdnadalah nama database yang Anda inginkan untuk mengembalikan file bacpac Anda. /tsnadalah nama server SQL Anda.

Anda dapat melihat semua deskripsi parameter ini di tautan dari # 5.


Ini dapat dicapai bahkan lebih mudah jika Anda menginstal SSMS 2012. Anda cukup menggunakan wizard seperti yang dijelaskan oleh @Josiah di atas, bahkan dengan server 2008 R2.
DanO

2
Saya menghabiskan banyak waktu mencari solusi ini sehingga saya berhasil mengunduh seluruh studio manajemen 2014.
Santhos

SqlPackage tergantung pada saya pada langkah 'memperbarui basis data' sampai saya benar
michael_hook

10

Anda dapat memulihkan BACPAC dengan menggunakan alat sisi klien. Video ada di sini:

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

Alat tersedia di sini:

http://sqldacexamples.codeplex.com/documentation


Alat ini seharusnya mendukung impor bacpac ke dalam basis data lokal. Misalnya, mengimpor bacpac ke database menggunakan Windows Auth akan terlihat seperti ini: "DacCli -S myserver -E -D nw_restored -F northwind.bacpac -I". Namun, daftar codep dari rakitan yang diperlukan sudah kedaluwarsa - tidak ada tautan yang akan berfungsi, sehingga alat tidak akan berjalan (memiliki prasyarat pada beberapa komponen CTP SQL 2012).
David Airapetyan

Saya telah menginstal semua komponen pada mesin saya, jadi saya mencoba mengimpor bacpac dengan DacCli - ini berhasil (lihat command-line dalam komentar saya sebelumnya). Butuh waktu sekitar 20 menit untuk bacpac 100MB.
David Airapetyan

7

Sepertinya doaku terkabul. Redgate meluncurkan alat Cadangan SQL Azure mereka secara GRATIS hari ini - http://www.red-gate.com/products/dba/sql-azure-backup/download


Beberapa masalah: 1. Pengembangan aktif cadangan SQL Azure dihentikan untuk saat ini (catatan ini ditampilkan ketika Anda menjalankan versi terbaru dari alat ini) 2. Saat mencadangkan langsung dari Azure ke SQL lokal, sepertinya tidak melewati bacpac tetapi sebaliknya mengimplementasikan semacam salinan skema / data buatan sendiri. Dalam pengalaman saya, ini sangat lambat. 3. Untuk membangun di atas poin sebelumnya, mekanismenya buggy - Saya punya beberapa tabel gagal mentransfer karena alat tidak dapat mendeteksi kunci unik
David Airapetyan

2
Jawaban ini harus diperbarui, atau tidak lagi menjadi jawaban yang diterima. Alat yang ditautkan sejak itu menjadi solusi "cloud" dan tidak mendukung cadangan lokal.
Timothy Strimple


5

Jika Anda menggunakan SSMS 2012, semudah mengklik kanan folder Databases di bawah server di Object Explorer dan memilih "Impor Aplikasi Data-tier ...".

Ada satu tonjolan di jalan yang harus diwaspadai: per 26 Maret 2013 (ketika saya perlu mencari tahu bagaimana melakukannya sendiri), ketika Anda mengekspor .bacpac dari Azure, itu akan diunduh sebagai file .zip, bukan file .bacpac, dan dialog file yang dibuka oleh tombol Browse di panduan impor hanya akan menampilkan * .bacpac atau . di filter file, menyiratkan bahwa .zip tidak didukung. Namun, jika Anda mengubah filter ke . , pilih .zip yang Anda unduh, dan klik Next, wizard akan melanjutkan dengan normal.


2
Ini jawaban yang benar. Anda sekarang dapat menginstal versi mandiri gratis SSMS 2016 dan menyediakan semua fitur ini
Aaron

3

Berikut ini skrip untuk mengembalikan banyak file bacpac sekaligus: Massal Restore file bacpac lokal

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] }
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.