У меня следующий запрос, чтобы проверить, есть ли какие-либо определенные пользователем объекты в моей базе данных SQL.
DECLARE @testForEmpty BIT
if exists
(select top 1 null from dbo.sysobjects where (objectproperty(id, 'IsMsShipped') = 0))
set @testForEmpty = 0
else set @testForEmpty = 1
Когда я запускаю этот запрос как конкретный пользователь, я всегда получаю testForEmpty = 1. Это означает, что вызов if Существует возвращает пустые строки.
Однако, если я добавлю пользователя в качестве sysadmin, то получу значение testFormEmpty равным 0, и по крайней мере одна строка будет выделена.
Я не хочу добавлять пользователя в качестве системного администратора. Какую минимальную роль / разрешения я должен предоставить, чтобы объект select из dbo.sysobjects возвращал содержимое.
Спасибо