Передайте переменную в полное имя в качестве базы данных в запросе SQL - PullRequest
1 голос
/ 30 апреля 2009

Я хочу сделать запрос к нескольким базам данных в SQL Server, поэтому я подумал, что могу создать переменную с именем @DBNAME и передать ее в запрос следующим образом (но он не работает).

Это будет внутри цикла, в котором DBNAME показывается как счетчик на dbid. Мой счетчик работает и выводит @DBNAME как все производственные базы данных ... но я не могу заставить его запрашивать несколько баз данных !

ЕСЛИ СУЩЕСТВУЕТ (ВЫБЕРИТЕ 1 ИЗ @ DBNAME.INFORMATION_SCHEMA.TABLES

WHERE TABLE_TYPE = 'BASE TABLE' и TABLE_NAME = 'DataArea') ВЫБЕРИТЕ "ПОЛУЧИТЬ" КАК РАЗ - ВЫБРАТЬ * Из DataArea AS res, В противном случае ВЫБЕРИТЕ NULL AS res;

1 Ответ

6 голосов
/ 30 апреля 2009

Вы можете сделать это с помощью динамического SQL, как это

declare @tablename as sysname, @dbname as sysname
select 
@dbname = 'master', 
@tablename = 'dbo.spt_fallback_db'
declare @script nvarchar(4000)
select @script = 'select top 10 * from ' + @dbname + '.' + @tablename
exec sp_executesql @script

Подставьте вашу базу данных и имена таблиц в зависимости от ситуации. Просто использовал один мастер формы для тестирования.

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