Мне нужно создать представление или табличную функцию, которая возвращает один набор результатов из запроса, выполненного для динамического списка баз данных (хранящегося в таблице). Все базы данных имеют одинаковую структуру, и представление / tvf должно содержать эквивалент объединения всех запросов для каждой базы данных в database_table. Общая картина всего этого заключается в том, что мне нужно, чтобы результаты этого запроса были доступны через ODBC.
После долгих поисков в Интернете я нашел несколько потенциальных решений, но ни одно из них не подходило бы под мои задачи.
Первое, что я изучил, было представление с выбором для каждой отдельной базы данных, объединенной вместе. Это сработало отлично, за исключением того факта, что он настолько далек от ремонтопригодности, насколько я могу себе представить. У меня будет 25-100 таких запросов к нескольким базам данных, каждый из которых должен выполняться с постоянно меняющимся набором баз данных.
Я все еще рассматриваю возможность использования этого метода и создания хранимых процедур для динамического создания представлений для меня, но это все еще не очень полезно, поскольку меня попросили сделать весь этот процесс без помощи рук. Для этого потребуется, чтобы кто-то инициировал обновление представления, прежде чем мы попытаемся подключиться к представлениям через ODBC. Я хотел бы избежать этого, если это вообще возможно.
Второе, что я изучил, приблизило меня к тому, что мне было нужно. Я использовал хранимую процедуру sp_msforeachdb, проверил, есть ли база данных в списке, и если да, то добавил результаты запроса в табличную переменную. Это работает просто отлично, но проблема была в том, что динамический sql не позволяет мне обернуть его в табличную функцию или представление ...
* * 1010
Это прекрасно работает при запуске его из запроса от ms ssms, но, как я уже сказал, поместить его в вид или tvf оказалось не по силам. Насколько мне известно, динамический SQL исключает использование tvf и представления не могут работать с переменными.
Есть ли способ, которым я могу сделать результаты вышеуказанного кода доступными через ODBC. Есть ли альтернативное решение, которое мне не хватает?