Запрос из двух баз данных, где таблица может отсутствовать ни в одной из баз данных. - PullRequest
1 голос
/ 28 февраля 2012

Я использую SQL Server 2008.

Есть ли способ выбрать из нескольких баз данных, где запрашиваемый столбец может существовать или не существовать?

Мой текущий код выглядит следующим образом:

SELECT Value FROM [database1].[dbo].[table_name] WHERE Name='job_name' AND EXISTS (SELECT 1 FROM [database1].INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='table_name')
UNION
SELECT Value FROM [database2].[dbo].[table_name] WHERE Name='job_name' AND EXISTS (SELECT 1 FROM [database2].INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='table_name')

Просто чтобы уточнить, я пытаюсь сделать запрос из двух разных баз данных. Обе базы данных должны иметь одинаковую схему, но, возможно, не были полностью инициализированы и поэтому могут не содержать запрашиваемую таблицу. Я пытаюсь сделать это одним запросом.

1 Ответ

2 голосов
/ 28 февраля 2012

Имена, используемые в запросе, должны существовать в то время, когда оптимизатор SQL пытается планировать выполнение запроса.Если этого не произойдет, вы получите грубые сообщения о том, что соответствующая таблица или столбец не существует.Там нет никакого стандартного способа обойти это.И очень маловероятно, что есть и нестандартный способ обойти это.

По крайней мере, нет способа обойти этот текст дословно.Если вы готовы выполнять запросы к системному каталогу (либо через собственные таблицы системного каталога, либо через информационную схему, которая более или менее стандартизирована), то вы можете решить, как создать запрос во время выполнения, чтобы он имелмаксимальный шанс на успех.Это необычное требование;немногие программы рассчитаны на такие отклонения от ожидаемой нормы для базы данных, к которой они подключаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...