Bài viết liên quan

Export database to file .bapac from SQL Server On-Premise


17/03/2021- duocnt    3586 Views    

NỘI DUNG.

  1. Install Microsoft® SQL Server® Data-Tier Application Framework (SqlPackage.exe).
  2. Chạy lệnh Command Prompt để export database thành file .bacpac.
  3. Xử lý lỗi (nếu có).
  4. Chạy lại Command Prompt.



THỰC HIỆN

1 - Install Microsoft® SQL Server® Data-Tier Application Framework (sqlpackage).

 - Vào Download and install sqlpackage.

 - Chọn file phù hợp với hệ điều hành máy tính của bạn, ở đây mình chọn platform Window.

 - Sau khi download và Install. Vào đường dẫn sau các bạn sẽ thấy sqlpackage.exe. 

        C:\Program Files\Microsoft SQL Server\150\DAC\bin

 - SqlPackage.exe sẽ được sử dụng để export Sql Server Database thành file .bacpac ở bước kế tiếp.


2 - Chạy lệnh Command Prompt để export database thành file .bacpac.

 - Mở Command Prompt bằng quyền administrator.

 - Copy và paste đoạn text bên dưới vào Command Prompt vừa mở và nhấn Enter.

 - Đoạn text này với mục đích di chuyển con trỏ đến thư mục mà SqlPackage.exe được Install ở bước trên.

    cd C:\Program Files\Microsoft SQL Server\150\DAC\bin

 - Copy đoạn text bên dưới ra notepad hoặc bất cứ text editor nào mà bạn có thể chỉnh sửa text.

SqlPackage.exe /a:export /ssn:duocnt /sdn:[A] /tf:[B] /p:CommandTimeout=1200 /p:VerifyFullTextDocumentTypesSupported=false /sp:[C] /su:[D]

 - Thay thế các tham số [A],[B],[C],[D] như sau:

    +    [A] = Tên database cần Export.

    +    [B] = Đường đến nơi muốn lưu file .bacpac bao gồm tên file và phần mở rộng (.bacpac).

    +    [C] = Mật khẩu đăng nhập vào SQL Server.

    +    [D] = User đăng nhập vào SQl Server.

 - Ví dụ để xuất database DatabaseTest và lưu ở E:\DatabaseTest.bacpac, với password của SQL Server là 123456789 và tên đăng nhập là sa.

SqlPackage.exe /a:export /ssn:duocnt /sdn:DatabaseTest /tf:E:\DatabaseTest.bacpac /p:CommandTimeout=1200 /p:VerifyFullTextDocumentTypesSupported=false /sp:123456789 /su:sa


3 - Xử lý lỗi (nếu có).

 - Tùy từng lỗi mà chúng ta sẽ có cách khắc phục tương ứng.

 - Trong ví dụ này, khi xuất file .bacpac phát sinh 2 lỗi như sau, và đây cũng là 2 lỗi thường gặp nhất khi xuất SQL Server On-Premise ra file .bacpac.

+ Error SQL71564: Error validating element [username]: The element [username] has been orphaned from its login and cannot be deployed.

+ Error SQL71562: Error validating element [dbo].[procedure]: Procedure: [dbo].[procedure] has an unresolved reference to object [object]. External references are not supported when creating a package from this platform.


Cách xử lý.

1 - Đối với trường hợp lỗi "Orphaned User" (Error SQL71564: Error validating element [username]: The element [username] has been orphaned from its login and cannot be deployed.). Có rất nhiều bài viết trên internet giải thích nguyên nhân và đưa hướng dẫn khắc phục mà bạn có thể tham khảo.

Ví dụ:    

    How to fix orphaned SQL Server users,.

    Using sp_change_users_login to fix SQL Server orphaned users,.

    sp_change_users_login (Transact-SQL).

Trường hợp cụ thể này, chúng ta cần làm như sau:

 - Tạo mới 1 Login với trên trùng với database (mục đích dễ nhận biết) và password là 123456789.

    CREATE LOGIN databaseTest WITH PASSWORD = '123456789';

 - Sau khi chạy câu T-SQL trên, chúng ta vào Security => Logins sẽ thấy login databaseTest đã được tạo.


 - Sử dụng sp_change_users_login để Map "Orphaned User" vào Logins. Cụ thể là map user "Response" vào Logins "databaseTest".

    EXEC sp_change_users_login 'update_one', 'Response', 'databaseTest';


 - Bạn có thể kiểm tra kết quả trực quan từ SSMS như sau:


2 - Đối với lỗi "External references are not supported when creating a package from this platform".

 - Khi database có liên kết với những dữ liệu khác nằm ngoài database thì khi xuất file .bacpac sẽ bị lỗi.

 - Bạn có thể xem thông báo lỗi và tìm đến từng external source để xử lý.

 - Trong trường hợp cụ thể này cách xử lý sẽ là disable cái store procedure.


4 - Chạy lại Command Prompt.

 - Sau khi khắc phục hết những lỗi mà command prompt thông báo ở trên, chúng ta tiến hành chạy lại lệnh command prompt để xuất SQL Server Database on-premise thành file .bacpac.











Góp ý kiến

;
;