Zasadniczo szukam odpowiednika SqlCommandBuilder.DeriveParameters
, które będzie działać dla dowolnego T-SQL.Jak określić parametry wymagane przez dowolny fragment T-SQL?
Na przykład, ta kwerenda wymaga jednego parametru:
SELECT @Foo [Foo], '@Bar' [Bar], @Baz [Baz]
I w zasadzie trzeba wyodrębnić:
new[] { "Foo", "Baz" }
z góry. Mogłem zbudować parser SQL, ale mam otwarte połączenie z serwerem SQL, więc wolałbym użyć istniejącej opcji, jeśli to możliwe.
Edit:
Nie ma być jakiś sposób, aby to zrobić, ponieważ SQL Server Business Intelligence Development Studio jest w stanie to zrobić bardzo skutecznie.
Edit 2:
BIDS SQL wykonuje polecenia w celu opisania wyniki:
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
Co wyjaśnia, jak można określić kolumn, ale może być tylko ciąg parsowania, aby uzyskać parametry ...
Jak budujesz ten początkowy ciąg? Czy jest coś, czego możesz użyć do dynamicznego budowania tego ciągu w celu znalezienia wymaganych parametrów? – mservidio
Czy program SQL Profiler pokazuje coś interesującego, jeśli oglądasz serwer podczas pobierania Business Intelligence Development Studio, aby to zrobić? Powiedziałby nam, czy jest to funkcja serwera, czy tylko parsowanie ciągu znaków. – AakashM
Być może wystarczy użyć wyrażenia regularnego, aby znaleźć @zmienne, które nie są zawarte w cudzysłowach ... które powinny działać, jak sądzę. – mservidio