Biên dịch có điều kiện của thủ tục lưu trữ SQL Server


8

Phiên bản ngắn: Có cách nào để biên dịch các đoạn mã TSQL có điều kiện trong Dự án Dữ liệu Máy chủ SQL bằng Công cụ Dữ liệu Máy chủ SQL cho Visual Studio 2010 không?

Tôi đang sử dụng Công cụ dữ liệu SQL Server trong Visual Studio 2010 để làm việc trên cơ sở dữ liệu SQL Server Express thử nghiệm. Điểm đến cuối cùng nếu mọi thứ hoạt động tốt sẽ là một nền tảng SQL Server dành cho doanh nghiệp. Tôi có cả phiên bản 2008 trên một hộp và phiên bản 2012 trên một hộp khác, bởi vì công ty của tôi đang trong quá trình di chuyển từ 2008 đến 2012 cho nhiều cơ sở dữ liệu doanh nghiệp.

Trong các ngôn ngữ lập trình khác mà tôi đã sử dụng, các chỉ thị tiền xử lý giúp dễ dàng biên dịch các phần của một cơ sở mã. Việc sử dụng phổ biến nhất cho việc này là có mã khác nhau cho các nền tảng khác nhau trong các phần bị hạn chế hoặc loại trừ mã đầu ra gỡ lỗi khỏi các bản dựng phát hành .

Cả hai điều này có thể rất hữu ích trong một số thủ tục cửa hàng tôi đang làm việc. Có bất cứ điều gì như thế này có sẵn? Tôi biết tôi có thể sử dụng sqlcmdcác biến để trao đổi các giá trị cụ thể trong quá trình triển khai, nhưng tôi không thể tìm ra cách sử dụng biến đó để bao gồm hoặc loại trừ các đoạn mã tiếp theo.

Thí dụ:

#IF $(DebugVersion) = 'True'
    -- A bunch of useful PRINTs and what not
#ELSE
    SET NOCOUNT ON
#ENDIF

#IF $(SSVersion) = '2012'
    SET @pretty_date = FORMAT(@some_date, 'dddd, MMM dd, yyyy')
#ELSE
    SET @pretty_date = CAST(@some_date AS nvarchar(12))
#ENDIF

Câu trả lời:


6

Thật không may, tôi không biết điều này là có thể với SSDT.

Tùy thuộc vào mức độ lớn của dự án và số lượng thủ tục bạn dự định nâng cao với các tính năng năm 2012, dự án có thể được quản lý với Dự án tổng hợp .

SSDT có thể kết hợp một dự án cơ sở dữ liệu với một hoặc nhiều dự án cơ sở dữ liệu được tham chiếu hoặc dacpac để mô tả một lược đồ cơ sở dữ liệu tổng hợp duy nhất. Sử dụng một dự án tổng hợp cho phép cơ sở dữ liệu lớn được chia thành các phần dễ quản lý hơn, cho phép những người hoặc nhóm khác nhau có trách nhiệm đối với các phần khác nhau của lược đồ tổng thể và cho phép sử dụng lại các định nghĩa đối tượng cơ sở dữ liệu trong nhiều cơ sở dữ liệu.

Khái niệm này sẽ có một dự án cơ sở, chứa các định nghĩa đối tượng chung và các dự án cụ thể phiên bản cho các thủ tục sử dụng các tính năng mới. Dự án 2012 sẽ tham chiếu dự án cơ sở và một trình biên dịch / xây dựng sẽ kết hợp các đối tượng từ cả hai.

PITA sẽ là bạn không thể ghi đè một đối tượng trong dự án cơ sở bằng một đối tượng trong một tổ hợp, do đó bạn sẽ phải duy trì các dự án cơ sở, 2008 & 2012. Khi bạn muốn có một phiên bản 2012 của một thủ tục cụ thể, bạn sẽ phải xóa nó khỏi cơ sở và tạo một phiên bản trong cả hai dự án 2008 & 2012.


2

Tôi đã có một cuộc thảo luận mở về MSDN về nhu cầu này. Chưa có nhiều tiến bộ. Tình huống lý tưởng sẽ cho phép bạn gắn cờ các đối tượng db là "kế thừa" trong các dự án ssdt cơ sở để các dự án khác tham chiếu dự án cơ sở hoặc DAC không phàn nàn về đối tượng trùng lặp và sẽ chỉ tạo đối tượng cơ sở hoặc "sơ khai" nếu nó đã không tồn tại Điều này sẽ cho phép bạn có "lớp" mô hình cơ sở dữ liệu. Xem bài đăng của tôi về msd Mở rộng giải pháp tổng hợp SSDT với các thủ tục được lưu trữ quá mức

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.