На основе этих 2 баз данных ниже:
Database_A on Server_1
Database_B on Server_2
Я имею created a linked server to Database_B on Server_1 instance by name 'LS_B'.
У меня есть огромный файл сценария, который в основном составляет требуемые таблицы, функции, представления и сохраненный procs на Database_A.
Эти функции, представления и сохраненный procs в свою очередь относятся к таблицам Database_B.
Проблема, я должен теперь пойти и включать OPENQUERY(LS_B,<query refering to database_b table>)
везде в файле сценария.
Например,
create procedure some_proc
as
begin
select * from openquery(LS_B, 'select * from [Database_B].[dbo].[Table_1]');
end
Существует ли лучший способ сделать это?
. предложить.
Спасибо
обновление
почему это перестало работать
select top (50) * from LS_B.[Database_B].[dbo].[Table_1]
в то время как ниже работ
select * from OpenQuery(LS_B, 'select top (50) * from Database_B.dbo.Table_1')
Сообщение об ошибке при выполнении первого запроса
Не может обработать объектный ""Database_B". "dbo". "Table_1"". Провайдер OLE DB "SQLNCLI10" для связанного сервера "LS_B" указывает, что или объект не имеет никаких столбцов или текущего пользователя, не имеет полномочий на том объекте
Оба сервера находятся на том же домене.
Если оба сервера являются серверами SQL, вы можете использовать следующий синтаксис:
select * from LS_B.[Database_B].[dbo].[Table_1]
Это будет зависеть от вашего существующего синтаксиса, упростит ли это поиск и замену.
Вы также можете создать группу представлений на сервере 1, названных в честь таблиц, упомянутых в sps, а затем сделать так, чтобы эти представления ссылались на связанный сервер:
CREATE VIEW Table_1
AS
select * from LS_B.[Database_B].[dbo].[Table_1]