Không bao gồm bảng cụ thể từ triển khai SSDT


11

Tôi có một cơ sở dữ liệu hiện có với mọi thứ trong lược đồ dbo. Tôi có một dự án SSDT với các đối tượng tôi đang thêm vào nó bằng lược đồfoo

Tôi có một bảng trông như thế này trong dự án:

CREATE table foo.a (
    id INT NOT NULL
        CONSTRAINT [PK_foo_a] PRIMARY KEY CLUSTERED
        CONSTRAINT [FK_foo_a] FOREIGN KEY REFERENCES [dbo].[a],
    desc NVARCHAR(50) NOT NULL
)

Nó phụ thuộc vào dbo.a. dbo.a có nhiều cột là khóa ngoại đối với các cột khác. Một số người khác (người duy trì lược đồ mặc định) có thể thay đổi dbo.a.

Tôi muốn lưu trữ đơn giản dbo.a như:

CREATE table dbo.a (
    id INT NOT NULL
        CONSTRAINT [PK_a] PRIMARY KEY CLUSTERED
)

Vì vậy, nó được xây dựng nội bộ, nhưng không được triển khai. Điều đó có thể không?


Bạn không sử dụng Schema So sánh cho các triển khai của bạn? Bạn chỉ có thể bỏ chọn bảng đó từ danh sách khi phát hiện thay đổi.
Dave

Tôi đang thực hiện một so sánh lược đồ tại thời điểm này, nhưng không có từ máy tính xách tay của tôi đến máy chủ dev mà tôi muốn thực hiện một triển khai xuất bản thực tế.
Justin thân mến

Câu trả lời:


11

Bạn có thể sử dụng Bộ lọc triển khai AgileSqlClub SqlPackage .

Hướng dẫn ngắn gọn được sao chép từ bài viết gốc của Ed Elliott :

  1. Tải xuống bộ lọc từ agilesqlclub.codeplex.com
  2. Đặt DLLvào cùng thư mục vớisqlpackage.exe
  3. Thêm các tham số dòng lệnh này để triển khai:

    /p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor /p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreSchema(BLAH)"

    Điều này sẽ không triển khai, thả hoặc thay đổi bất cứ điều gì trong BLAHlược đồ.

Xem bài viết gốc để biết chi tiết đầy đủ.


Khi tôi triển khai từ devenv.exe thông qua các tệp foo.publish.xml, nó không sinh ra sqlpackage.exe. Có cách nào tôi có thể làm cho nó làm điều đó?
Justin thân mến

Những gì tôi làm là không bao giờ sử dụng devenv để triển khai các thay đổi, thay vào đó xây dựng dự án và sử dụng tập lệnh để điều khiển sqlpackage.exe - cách này bạn có thể làm những việc như sử dụng những người đóng góp triển khai một cách dễ dàng và cũng kiểm tra tập lệnh tương tự bạn có thể sử dụng trong các môi trường khác của mình trong quá trình ci của bạn!
Ed Elliott

Đây là một trợ giúp lớn cho tôi, tôi chỉ cần triển khai một lược đồ cụ thể ,. Lưu ý cho những người khác trong tương lai, phương pháp bỏ qua có thể sử dụng regex IgnoreSchema (^ (?! \ B (? I) BLAH \ b). *) Để bỏ qua mọi thứ trừ lược đồ BLAH
andyb952

3

Chỉ quản lý một phần của cơ sở dữ liệu SSDTlà khó khăn. Nếu không có sự phụ thuộc thì bạn có thể không cho phép nó thả các đối tượng và không đưa nó vào dự án. Vì có sự phụ thuộc, nhưng bạn không muốn quản lý chúng, tôi nghĩ rằng bạn sẽ phải lừa hệ thống.

Một phương pháp xuất hiện trong đầu tôi, tôi không có khả năng kiểm tra chúng ngay bây giờ và tôi chỉ sử dụng một phương pháp "tương tự" với phương pháp này, không phải phương pháp này chính xác.

Lựa chọn 1:

  1. Tạo một dự án cơ sở dữ liệu mới với dbo.anó.

  2. Tham khảo bảng với đặt tên 3 phần. Đối với phần đầu tiên của tên, sử dụng biến SQLCMD. Ví dụ[$(DatabaseName)].dbo.a.

  3. Không bao giờ triển khai foocơ sở dữ liệu của bạn .

  4. Thông qua xuất bản các tập tin hoặc giao diện cli, làm $(DatabaseName)bằng tên giống như cơ sở dữ liệu thực sự của bạn.


Sẽ thử điều này
Justin Dearing

@JustinDear Sử dụng phương thức bộ lọc triển khai, nó hoàn toàn phù hợp với trường hợp sử dụng của bạn (Tức là giữ tất cả các bảng trong kiểm soát nguồn và chỉ cần bỏ qua một số khi triển khai)
Ed Elliott

0

Một cách tích hợp "sạch" để thực hiện việc này (kể từ năm 2016) là sử dụng tệp So sánh lược đồ đã lưu. Bạn có thể:

  1. Thực hiện So sánh lược đồ của bạn (từ dự án cơ sở dữ liệu của bạn -> máy chủ đích) và bỏ chọn bất kỳ đối tượng nào bạn muốn loại trừ để cập nhật.
  2. Lưu lược đồ của bạn So sánh với tệp * .scmp
  3. Bạn có thể sao chép và dán tệp .scmp để tạo phiên bản cho các môi trường khác nhau nếu cần và chỉ cần chỉnh sửa trong trình soạn thảo XML để thay đổi nguồn (để trỏ đến xây dựng tệp dacpac đầu ra), kết nối, v.v. hoặc thậm chí thêm / sửa đổi thủ công các mục trong phần .
  4. Định cấu hình tham số lệnh triển khai / xuất bản dacpac của bạn để sử dụng tệp .scmp thích hợp cho xuất bản. ví dụ: SqlPackage.exe / Hành động: xuất bản /SourceFile:c:\project\schema_compare.scmp

Thêm thông tin tại đây: https://devbloss.microsoft.com/ssdt/schema-compare-in-sqlpackage-and-the-data-tier-application-framework-dacfx/

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.