Về cơ bản, tôi đang tìm kiếm một tương đương với SqlCommandBuilder.DeriveParameters
sẽ hoạt động cho T-SQL tùy ý.Làm cách nào để xác định các tham số được yêu cầu bởi một phần T-SQL tùy ý?
Ví dụ, truy vấn này đòi hỏi một tham số:
SELECT @Foo [Foo], '@Bar' [Bar], @Baz [Baz]
tôi về cơ bản cần phải giải nén:
new[] { "Foo", "Baz" }
Từ trên. Tôi có thể xây dựng một trình phân tích cú pháp SQL, nhưng tôi có một kết nối mở với máy chủ SQL, vì vậy tôi muốn sử dụng một tùy chọn hiện có nếu có thể.
Edit:
Có có là một cách để làm điều này, bởi vì Business Intelligence Development Studio SQL Server có thể làm được điều này rất thành công.
Chỉnh sửa 2:
BIDS SQL được thực thi lệnh này để mô tả kết quả:
exec sp_executesql N'SET FMTONLY OFF;SET FMTONLY ON;SELECT @Foo [Foo], ''@Bar'' [Bar], @Baz [Baz]',
N'@Foo sql_variant,@Baz sql_variant',
@Foo=NULL,@Baz=NULL
nào giải thích làm thế nào nó có thể xác định các cột, nhưng nó thể được chỉ cần phân tích cú pháp chuỗi để nhận các tham số ...
Bạn đang xây dựng chuỗi ban đầu này như thế nào? Có cái gì bạn có thể sử dụng mà bạn đang sử dụng để tự động xây dựng chuỗi này để tìm các thông số cần thiết? – mservidio
SQL Profiler có hiển thị bất kỳ điều gì thú vị nếu bạn xem máy chủ trong khi nhận được Business Intelligence Development Studio để làm điều này không? Sẽ cho chúng tôi biết nếu đó là một chức năng máy chủ hoặc chỉ phân tích cú pháp chuỗi – AakashM
Có lẽ chỉ cần sử dụng một biểu thức chính quy để tìm các biến @ mà không được đặt trong dấu ngoặc kép ... mà nên làm việc tôi nghĩ. – mservidio