У меня есть определяемая пользователем табличная функция в SQL Server, которая собирает данные из нескольких таблиц, включая пару таблиц другой базы данных. Это делается жестко запрограммированным именем базы данных в запросах, но мы хотим сделать имя базы данных настраиваемым (поскольку наши базы данных обычно совместно используют сервер с базами данных других приложений).
Я попытался создать строку динамического запроса внутри функции, используя имя базы данных, которое хранится в таблице конфигурации, но:
- Когда я попробовал
exec(@sqlStatement)
, SQL Server сказал, что строка выполнения не разрешена внутри функции. - Затем я попробовал
exec sp_executesql @sqlStatement
, и функция была создана, но когда вы ее выполняете, SQL Server говорит, что внутри функции вы можете запускать только расширенные функции и процедуры.
Итак, вопрос: возможно ли создать функцию или хранимую процедуру, которая обращается к таблице в другой базе данных, без необходимости воссоздавать функцию, когда имя базы данных отличается?
ТИА.