Здравствуйте, 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'')')