Re: Как получить OBJECT_ID объекта на другом сервере?
От: Milena США  
Дата: 28.06.16 13:41
Оценка:
Здравствуйте, blonduser, Вы писали:


B>Всем доброго времени суток!


B>Как получить OBJECT_ID объекта на другом сервере?


B>Добавлен "Linked Srever".


B>При выполнении запроса

B>
B>SELECT * FROM LikedServer1.Database1.sys.objects WHERE [type] in (N'U')
B>

B>Запрос корректно выполняется.

B>Мне в запрос нужно добавить условие object_id = OBJECT_ID(N'Database1.[dbo].[Table1]') — это условие корректно срабатывает когда используется локальная БД,

B>а если используется LikedServer1 то в результате получаем NULL, даже при использовании такого выражения OBJECT_ID(N'LikedServer1.Database1.[dbo].[Table1]').

OBJECT_ID — локальная функция, SQL Server не разрешает вызывать ее напрямую удаленно.

Msg 344, Level 16, State 1, Line 5
Remote function reference 'linked.Diamond.dbo.object_id' is not allowed, and the column name 'linked' could not be found or is ambiguous.

Однако, можно обмануть его через OPENQUERY:

select * from openquery([my_linked_server], 'use my_db; select * from dbo.sysobjects where [id] = object_id(N''my_table'')')
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.