Как выбрать из таблицы в другой базе данных в SQL Server 2008 - PullRequest
0 голосов
/ 23 марта 2012

У меня есть много экземпляров базы данных, например, для EWB1,EWB2,EWB3 и т. Д. Если предположить, что я нахожусь в EWB1, и я хочу получить доступ к столбцу конкретной таблицы из других nstances (в этом случае скажем EWB2,EWB3 и т. Д. ) .. я делаю что-то вроде этого

declare @name varchar(10);
DECLARE cur3 CURSOR FOR select EnterpriseDBInstance from [EWB_DAL].[dbo].[Enterprise] where EnterpriseDBInstance <>  CONVERT(varchar(10),DB_NAME());
OPEN cur3;
Fetch next from cur3 into @name;
WHILE @@FETCH_STATUS = 0
BEGIN   
declare @test varchar(10);
set @test = (select @name);     
select ChapterName from [@test].[dbo].[FormData] -- This line is giving error
                                                 -- unable to find @test....
Fetch next from cur3 into @name;
END
close cur3; 
deallocate cur3; 

Но я мог видеть EWB2,EWB3... в @test ..

Ответы [ 2 ]

1 голос
/ 23 марта 2012

Вы не можете использовать имена баз данных динамически (то есть, используя переменные), так же, как вы не можете использовать имена таблиц или столбцов таким образом.

Запрос, который вы пытаетесь найтибаза данных с именем @test.

Вам необходимо рассмотреть использование динамического SQL для такой работы или переосмыслить свой подход.Я предлагаю прочесть Проклятие и благословения динамического SQL Эрланда Соммарскога.

0 голосов
/ 30 мая 2012

использовать qoutename как qoutename (имя переменной базы данных) это работает ...

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