2014-11-05 16 views
16

Tôi muốn trích xuất giản đồ cơ sở dữ liệu của cơ sở dữ liệu MSSQLServer bằng Server Management Studio. Tôi sử dụng lệnh Extract "Extract Data-tier Application .."Làm thế nào để trích xuất cơ sở dữ liệu MSSQLServer dưới dạng .dacpac mà không có VerifyExtraction?

Trong cơ sở dữ liệu là một số tham chiếu đến cơ sở dữ liệu khác. Bởi vì điều này tôi nhận được lỗi sau.

Lỗi trích xuất cơ sở dữ liệu: Xác thực mô hình lược đồ cho gói dữ liệu không thành công. Lỗi SQL71562: Lỗi xác thực phần tử [dbo]. [X] có tham chiếu chưa được giải quyết đối tượng [dbo]. [Y]. Tham chiếu bên ngoài không được hỗ trợ khi tạo gói từ nền tảng này.

Vấn đề là, rằng SSMS sử dụng SQLPackage.exe với tham số /p: VerifyExtraction = True. Khi tôi sử dụng giao diện điều khiển và gọi SQLPackage.exe mà không có tham số này, nó sử dụng /p: VerifyExtraction = False theo mặc định và tôi có thể tạo tệp .dacpac.

Có cách nào để định cấu hình SSMS để tắt xác minh không?

Trả lời

33

Tôi không thể tìm thấy phương thức hoạt động trong SSMS (2008 R2 hoặc 2012), nhưng Visual Studio (2013) với SSDT dường như hoạt động: Trong VS, hãy truy cập SQL Server Object Explorer, kết nối với máy chủ được đề cập, nhấp chuột phải vào cơ sở dữ liệu được đề cập, Trích xuất ứng dụng tầng dữ liệu và sau đó điều chỉnh Cài đặt trích xuất, một trong số đó là "Xác minh trích xuất". Tôi không biết tại sao MS không chỉ xây dựng nó thành SSMS.

Một điều hơi kỳ lạ mà tôi nhận thấy khi làm, điều này, mặc dù, là VS sẽ chỉ trích xuất một .DacPac thông qua phương pháp này. Ngay cả khi bạn chọn thêm dữ liệu vào phần trích xuất, phần mở rộng vẫn là .DacPac. Tôi đã được ấn tượng rằng các DacPacs chỉ dành cho Schema Only, trong khi .BacPacs là cho Schema + Data. Bất kể, sau khi VS tạo tệp .DacPac (Schema + Data), SSMS có thể nhập nó bằng cách sử dụng trình thủ thuật "Triển khai tầng dữ liệu ứng dụng ...".

14

Nếu bạn không thể sử dụng Visual Studio, bạn có thể sử dụng dòng lệnh SqlPackage ứng dụng để trích xuất giản đồ từ cơ sở dữ liệu. Theo mặc định, điều này không xác minh lược đồ (không, tôi không biết tại sao SSMS và cung cấp dòng lệnh có các giá trị mặc định khác nhau!). SqlPackage.exe có thể được tìm thấy trong C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin.

Ví dụ, sau chiết xuất schema cho MyDatabase từ trường hợp SQL Server địa phương và kết quả đầu ra nó vào một tập tin .dacpac trên hệ thống tập tin địa phương:

sqlpackage /Action:Extract /SourceDatabaseName:"MyDatabase" /SourceServerName:localhost /TargetFile:"C:\SomeDirectory\MyDatabase.dacpac" 

Nếu bạn muốn bao gồm xác minh sơ đồ ở giai đoạn sau , bạn có thể đặt cờ một cách rõ ràng bằng cách thêm /p:VerifyExtraction=True vào dòng lệnh.

thông tin đầy đủ về SqlPackage.exe có thể được tìm thấy ở đây:

https://msdn.microsoft.com/library/hh550080.aspx

+0

Sau khi đuổi theo cái đuôi của tôi hàng giờ đồng hồ với các kịch bản PowerShell không hoạt động, lắp ráp phù hợp và các phiên bản (và tôi thừa nhận thiếu kinh nghiệm với Powershell), điều này làm việc ngay. –

+0

@ Nick.McDermaid Cảm ơn bạn đã bình luận, tôi thực sự vui mừng khi nghe nó giúp. –

Các vấn đề liên quan