Azure SQL Veritabanı Bacpac Yerel Geri Yükleme


130

Azure Yönetim Konsolu içindeki "Dışa Aktar" seçeneğini kullanarak Azure SQL Veritabanımın bir BACPAC yedeğini oluşturdum.

Bunu makineme indirdikten sonra, bunu yerel bir SQL Server örneğine nasıl geri yükleyebileceğim konusunda biraz takılı kaldım. DacImportExportCli aracına rastladım ancak yerel bir geri yükleme örneği bulamadım.

Ayrıca, bunu yapan bir komut dosyası yazdıysa (böylece programlanabilir) bu harika olurdu.


8
Bu bir SQL Server 2012 olayı olabilir, ancak SQL Server Management Studio'da yerel sunucumun veritabanı klasörüne sağ tıklayıp Azure veritabanımın kopyasını üretmek için BACPAC dosyasında okuyan bir sihirbazı başlatan Veri Katmanı Uygulamasını İçe Aktar'ı seçersem . İlk önce yerel olarak kopyalamak istemiyorsanız, sihirbaz BACPAC dosyasını almak için doğrudan blob deposuna da bağlanabilir.
dumbledad

Bunu hiç çözdün mü?
Nate

3
@dumbledad Veri katmanı uygulamasını içe aktarmanın bir SQL 2012 SSMS olayı olduğuna inanıyorum, 2008R2 yalnızca DACPAC'leri dışa aktarma yeteneğine sahip görünüyor, bir içe aktarma seçeneği göremiyorum.
jamiebarrow

Yanıtlar:


179

Bu, SQL Server Management Studio 2012 aracılığıyla basitçe yapılabilir

  1. Bağlantı> Veritabanları düğümüne sağ tıklayın ve " Veri katmanı uygulamasını içe aktar ... " seçeneğini seçin.
  2. Giriş adımında " İleri " yi seçin .
  3. görüntü açıklamasını buraya girin
  4. Yedeklemelerin tutulduğu bir depolama hesabına göz atın veya bağlanın.

2
Bu harika. RedGate aracı güvenilir olmayabilir. MS destekli bir seçenek görmekten memnunum.
gilly3

2
Sql express 2012 ile çalışıyor mu? Aşağıdaki hata iletisine sahip olduğum için: Şema modelini paketten yükleme. (Microsoft.SqlServer.Dac) ------------------------------ EK BİLGİLER: Dahili Hata. Dahili hedef platform türü SqlAzureDatabaseSchemaProvider, şema dosyası sürümü '2.5' desteklemiyor. (Dosya: C: \ Users \ xxxxx \ Downloads \ dbname-2013-10-10-20-2.bacpac) (Microsoft.Data.Tools.Schema.Sql)
Antoine Meltzheim

@ElTone Management Studio'yu kullanarak bir bacpac'i doğrudan Azure Storage'dan yerel SQL Server Express 2012 veritabanıma geri yükledim. Herhangi bir hata görmedim ve veriler orada görünüyor. Biri SQL Server Veri Araçlarının daha yeni bir sürümünü kurmanın kendilerine yardımcı olduğundan bahsediyor (ancak bunlar Management Studio'ya atıfta bulunmuyor) social.msdn.microsoft.com/Forums/windowsazure/en-US/…
Juha Palomäki

@Juha Palomäki Doğru: SSDT'nin en son sürümünü yüklemek sorunu çözdü. Artık her şey daha iyi.
Antoine Meltzheim

4
Management Studio ile ne kadar büyük bacpac dosyalarını içe aktarabileceğiniz konusunda bazı sınırlamalar var gibi görünüyor. OutOfMemory istisnasına ulaşırsanız, Flea'nın komut satırı aracı SqlPackage.exe'nin nasıl kullanılacağına ilişkin yanıtını kontrol edin
Juha Palomäki

52

Bir SQL Azure veritabanını dışa aktarmam ve ardından yerel bir SQL 2008 R2 sunucusuna aktarmam gerekiyordu (Not, ayrıca Visual Studio 2010 kullanıyorum). Microsoft bunu acı verici bir görev haline getirmek için kesinlikle kendi yolundan çıktı, ancak bunu aşağıdakileri yaparak yapabildim:

  1. Bu bağlantıya http://msdn.microsoft.com/en-us/jj650014 gidin ve Visual Studio 2010 için SQL Server Veri Araçlarını yükleyin

  2. Bu, yerel sürücünüze yüklenecektir. Benim durumumda onu koyduğu yer: C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ DAC \ bin

  3. Buna komut satırı veya powershell aracılığıyla göz atın

  4. SqlPackage.exe'yi yürütmek isteyeceksiniz

  5. SqlPackage.exe için tüm parametre seçeneklerinin bir listesini görmek için bu bağlantıyı açın ( http://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx )

  6. İşte bir .bacpac dosyasını yerel SQL 2008 R2 sunucuma aktarmak için yürütmem gereken komut satırım:

    . \ SqlPackage.exe / a: İçe Aktar /sf:C:\mydatabasefile.bacpac / tdn: NorthWind / tsn: BINGBONG

/tdnbacpac dosyanızın geri yüklenmesini istediğiniz veritabanının adıdır. /tsnSQL sunucunuzun adıdır.

Tüm bu parametre açıklamalarını 5 numaralı bağlantıda görebilirsiniz.


SSMS 2012 kuruluysa, bu daha da kolay bir şekilde gerçekleştirilebilir. Yukarıda @Josiah tarafından açıklanan sihirbazı 2008 R2 sunucusuyla bile kullanabilirsiniz.
DanO

2
Bu çözümü aramak için o kadar çok zaman harcadım ki bu arada 2014 yönetim stüdyosunun tamamını indirmeyi başardım.
Santhos

SqlPackage, hedef veritabanını tamamen bırakana kadar 'veritabanını güncelleme' adımında benim için asılı duruyordu
michael_hook

10

BACPAC'yi istemci tarafı araçları kullanarak geri yükleyebilirsiniz. Videolar burada:

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

Araçlar burada mevcuttur:

http://sqldacexamples.codeplex.com/documentation


Aracın bacpac'ın yerel veri tabanına aktarılmasını desteklemesi gerekiyor. Örneğin, Windows Auth kullanarak bir bacpac'i veritabanına aktarmak şu şekilde görünür: "DacCli -S myserver -E -D nw_restored -F northwind.bacpac -I". Ancak, gerekli derlemelerin kodepleks listesi güncel değil - bağlantıların hiçbiri çalışmayacağı için araç çalışmayacaktır (bazı SQL 2012 CTP bileşenlerinde bir önkoşulu vardır).
David Airapetyan

Makineme tüm bileşenleri yükledim, bu nedenle DacCli ile bir bacpac almayı denedim - işe yaradı (önceki yorumumdaki komut satırına bakın). 100MB bacpac için yaklaşık 20 dakika sürdü.
David Airapetyan

7

Dualarım cevaplanmış görünüyor. Redgate, SQL Azure Yedekleme aracını bugün ÜCRETSİZ olarak kullanıma sundu - http://www.red-gate.com/products/dba/sql-azure-backup/download


Çeşitli sorunlar: 1. SQL Azure Backup'ın aktif gelişimi şimdilik durduruldu (bu not, aracın en son sürümünü çalıştırdığınızda görüntülenir) 2. Doğrudan Azure'dan yerel SQL'e yedekleme yaparken, bacpac, ancak bunun yerine bir tür evde geliştirilmiş şema / veri kopyası uygular. Deneyimlerime göre çok yavaştı. 3. Bir önceki noktaya dayanarak, mekanizma hatalı - Araç benzersiz bir anahtarı algılayamadığı için aktarılamayan birden fazla
tablom var

2
Bu cevap güncellenmeli veya artık kabul edilen cevap olmamalıdır. Bağlantılı araç o zamandan beri bir "bulut" çözümü haline geldi ve yerel yedeklemeleri desteklemiyor.
Timothy Strimple


5

SSMS 2012 kullanıyorsanız, Object Explorer'da bir sunucunun altındaki Veritabanları klasörüne sağ tıklayıp "Veri Katmanı Uygulamasını İçe Aktar ..." seçeneğini seçmek kadar kolaydır.

Yolda dikkat etmeniz gereken bir çıkıntı var: 26 Mart 2013 itibariyle (bunu nasıl yapacağımı kendim öğrenmem gerektiğinde), Azure'dan bir .bacpac dışa aktardığınızda, bir .zip dosyası olarak indirilecektir, bir .bacpac dosyası değil ve içe aktarma sihirbazındaki Gözat düğmesi tarafından açılan dosya iletişim kutusu yalnızca * .bacpac veya . dosya filtrelerinde, .zip dosyasının desteklenmediğini belirtir. Ancak, filtreyi olarak değiştirirseniz . , indirdiğiniz .zip dosyasını seçin ve İleri'ye tıklayın, sihirbaz normal şekilde ilerleyecektir.


2
Bu doğru cevap. Artık SSMS 2016'nın ücretsiz bağımsız sürümünü yükleyebilirsiniz ve tüm bu özellikleri sağlar
Aaron

3

İşte bir grup bacpac dosyasını aynı anda geri yüklemek için bir komut dosyası: Bacpac dosyalarını yerel olarak Toplu Geri Yükleme

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] }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.