справка с t-sql связанным сервером

На основе этих 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" указывает, что или объект не имеет никаких столбцов или текущего пользователя, не имеет полномочий на том объекте

Оба сервера находятся на том же домене.

1
задан stackoverflowuser 4 August 2010 в 22:50
поделиться

1 ответ

Если оба сервера являются серверами 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]
2
ответ дан 2 September 2019 в 22:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: