Cơ sở dữ liệu Azure Azure Bacpac Khôi phục cục bộ


130

Tôi đã tạo bản sao lưu BACPAC của Cơ sở dữ liệu Azure SQL của mình bằng tùy chọn "Xuất" trong Bảng điều khiển quản lý Azure.

Sau khi tải cái này xuống máy, tôi hơi băn khoăn về cách tôi có thể khôi phục cái này thành phiên bản SQL Server cục bộ. Tôi đã xem qua công cụ DacImportExportCli nhưng không thể tìm thấy ví dụ về khôi phục cục bộ.

Ngoài ra nếu bất cứ ai đã viết một kịch bản làm điều này (vì vậy nó có thể được lên lịch) sẽ rất tuyệt vời.


8
Đây có thể là một điều của SQL Server 2012, nhưng trong SQL Server Management Studio nếu tôi nhấp chuột phải vào thư mục cơ sở dữ liệu của máy chủ cục bộ của tôi và chọn Nhập ứng dụng Cấp dữ liệu bắt đầu một trình hướng dẫn đọc trong tệp BACPAC để tạo bản sao của cơ sở dữ liệu Azure của tôi . Trình hướng dẫn cũng có thể kết nối trực tiếp với kho lưu trữ blob để lấy tệp BACPAC nếu bạn không muốn sao chép tệp cục bộ trước.
dumbledad

Bạn đã bao giờ nhận ra điều này?
Nate

3
@dumbledad Tôi tin rằng đó là một điều SSMS SQL 2012 để nhập ứng dụng Cấp dữ liệu, 2008R2 dường như chỉ có khả năng xuất các DACPAC, không thể thấy tùy chọn nhập.
bánh kẹp

Câu trả lời:


179

Điều này có thể được thực hiện đơn giản thông qua SQL Server Management Studio 2012

  1. Nhấp chuột phải vào nút Kết nối> Cơ sở dữ liệu và chọn " Nhập ứng dụng tầng dữ liệu ... "
  2. Chọn " Tiếp theo " trong bước giới thiệu.
  3. nhập mô tả hình ảnh ở đây
  4. Duyệt hoặc kết nối với tài khoản lưu trữ nơi lưu giữ bản sao lưu.

2
Đây là hoàn hảo. Công cụ RedGate có thể hoàn hảo. Tôi rất vui khi thấy một tùy chọn hỗ trợ MS.
gilly3

2
Nó có hoạt động với sql express 2012 không? Bởi vì tôi có thông báo lỗi sau: Đếm không tải mô hình lược đồ từ gói. (Microsoft.SqlServer.Dac) ------------------------------ THÔNG TIN BỔ SUNG: Lỗi nội bộ. Loại nền tảng đích nội bộ SqlAzureDatabaseSchemaProvider không hỗ trợ phiên bản tệp lược đồ '2.5'. (Tệp: C: \ Users \ xxxxx \ Tải xuống \ dbname-2013-10-10-20-2.bacpac) (Microsoft.Data.Tools.Schema.Sql)
Antoine Meltzheim

@ElTone Tôi vừa khôi phục bacpac trực tiếp từ Azure Storage vào cơ sở dữ liệu SQL Server Express 2012 cục bộ của mình bằng Management Studio. Không thấy bất kỳ lỗi nào và dữ liệu dường như ở đó. Ai đó đề cập đến việc cài đặt phiên bản mới hơn của SQL Server Data Tools đã giúp họ (nhưng họ không đề cập đến Management Studio) social.msdn.microsoft.com/Forums/windowsazure/en-US/ trộm
Juha Palomäki

@Juha Palomäki Đúng: Cài đặt phiên bản SSDT mới nhất đã giải quyết được vấn đề. Tất cả đã tốt hơn bây giờ.
Antoine Meltzheim

4
Dường như có một số hạn chế về số lượng tệp bacpac bạn có thể nhập với Management Studio. Nếu bạn nhấn ngoại lệ OutOfMemory, hãy kiểm tra câu trả lời của Flea về cách sử dụng công cụ dòng lệnh SqlPackage.exe
Juha Palomäki

52

Tôi cần xuất cơ sở dữ liệu SQL Azure và sau đó nhập nó vào máy chủ SQL 2008 R2 cục bộ (Lưu ý tôi cũng đang sử dụng Visual Studio 2010). Microsoft chắc chắn đã nỗ lực để biến điều này thành một nhiệm vụ khó khăn, tuy nhiên, tôi đã có thể thực hiện nó bằng cách làm như sau:

  1. Xem liên kết này http://msdn.microsoft.com/en-us/jj650014 và cài đặt Công cụ dữ liệu SQL Server cho Visual Studio 2010

  2. Điều này sẽ cài đặt trên ổ đĩa cục bộ của bạn. Trong trường hợp của tôi, đây là nơi đặt nó: C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ DAC \ bin

  3. Duyệt đến đây thông qua dòng lệnh hoặc powershell

  4. Bạn sẽ muốn thực thi SqlPackage.exe

  5. Mở liên kết này để xem danh sách tất cả các tùy chọn tham số cho SqlPackage.exe ( http://msdn.microsoft.com/en-us/l Library / hh550080 (v = vs.103 ) .aspx )

  6. Đây là dòng lệnh của tôi mà tôi cần phải thực thi để nhập tệp .bacpac vào máy chủ SQL 2008 R2 cục bộ của mình:

    . \ SqlPackage.exe / a: Nhập /sf:C:\mydatabasefile.bacpac / tdn: NorthWind / tsn: BINGBONG

/tdnlà tên của cơ sở dữ liệu mà bạn muốn tệp bacpac của bạn khôi phục. /tsnlà tên của máy chủ SQL của bạn.

Bạn có thể thấy tất cả các mô tả tham số này trên liên kết từ # 5.


Điều này có thể được thực hiện thậm chí dễ dàng hơn nếu bạn đã cài đặt SSMS 2012. Bạn chỉ có thể sử dụng trình hướng dẫn như được mô tả bởi @Josiah ở trên, ngay cả với máy chủ 2008 R2.
DanO

2
Tôi đã dành rất nhiều thời gian để tìm kiếm giải pháp này và tôi đã tải xuống toàn bộ studio quản lý 2014 trong khi đó.
Santhos

SqlPackage đã treo cổ cho tôi ở bước 'cập nhật cơ sở dữ liệu' cho đến khi tôi bỏ hoàn toàn cơ sở dữ liệu đích
michael_hook

10

Bạn có thể khôi phục BACPAC bằng cách sử dụng các công cụ phía máy khách. Video ở đây:

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

Các công cụ có sẵn ở đây:

http://sqldacexamples.codeplex.com/documentation


Công cụ này được cho là hỗ trợ nhập bacpac vào cơ sở dữ liệu cục bộ. Ví dụ: nhập bacpac vào cơ sở dữ liệu bằng Windows Auth sẽ như thế này: "DacCli -S myserver -E -D nw_restored -F southwind.bacpac -I". Tuy nhiên, danh sách các bộ lắp ráp được yêu cầu đã hết hạn - không có liên kết nào hoạt động, vì vậy công cụ sẽ không chạy (nó có một điều kiện tiên quyết trên một số thành phần CTP SQL 2012).
David Airapetyan

Tôi đã cài đặt tất cả các thành phần trên máy của mình vì vậy tôi đã thử nhập bacpac bằng DacCli - nó đã hoạt động (xem dòng lệnh trong nhận xét trước của tôi). Mất khoảng 20 phút cho bacpac 100MB.
David Airapetyan

7

Có vẻ những lời cầu nguyện của tôi đã được trả lời. Redgate đã ra mắt công cụ sao lưu SQL Azure của họ MIỄN PHÍ ngay hôm nay - http://www.red-gate.com/products/dba/sql-azure-backup/doad


Một số vấn đề: 1. Hiện tại, quá trình phát triển tích cực của SQL Azure Backup bị dừng (ghi chú này được hiển thị khi bạn chạy phiên bản mới nhất của công cụ) 2. Khi sao lưu trực tiếp từ Azure sang SQL cục bộ, dường như nó không vượt qua bacpac nhưng thay vào đó thực hiện một số loại bản đồ / dữ liệu được trồng tại nhà. Theo kinh nghiệm của tôi, nó rất chậm. 3. Để xây dựng điểm trước, cơ chế bị lỗi - Tôi đã có nhiều bảng không chuyển được vì công cụ không thể phát hiện khóa duy nhất
David Airapetyan

2
Câu trả lời này nên được cập nhật, hoặc không còn là câu trả lời được chấp nhận. Công cụ được liên kết đã trở thành một giải pháp "đám mây" và không hỗ trợ sao lưu cục bộ.
Timothy Strimple

2
Công cụ sao lưu vẫn có sẵn từ red-gate.com/products/dba/sql-azure-backup/DiscContued
Ben Foster

5

Nếu bạn đang sử dụng SSMS 2012, việc nhấp chuột phải vào thư mục Cơ sở dữ liệu trong máy chủ trong Object Explorer và chọn "Nhập ứng dụng tầng dữ liệu ..." là dễ dàng.

Có một khúc mắc trên đường để đề phòng: kể từ ngày 26 tháng 3 năm 2013 (khi tôi cần tự tìm hiểu cách thực hiện việc này), khi bạn xuất một .bacpac từ Azure, nó sẽ được tải xuống dưới dạng tệp .zip, không phải là tệp .bacpac và hộp thoại tệp được mở bằng nút Duyệt trong trình hướng dẫn nhập sẽ chỉ hiển thị * .bacpac hoặc . trong các bộ lọc tệp, ngụ ý rằng .zip không được hỗ trợ. Tuy nhiên, nếu bạn thay đổi bộ lọc thành . , chọn .zip đã tải xuống của bạn và nhấp vào Tiếp theo, trình hướng dẫn sẽ tiến hành bình thường.


2
Đây là câu trả lời chính xác. Bây giờ bạn có thể cài đặt phiên bản độc lập miễn phí của SSMS 2016 và nó cung cấp tất cả các tính năng này
Aaron

3

Đây là tập lệnh để khôi phục một loạt các tệp bacpac cùng một lúc: Khôi phục hàng loạt các tệp bacpac cục bộ

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] }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.