Позвольте мне сначала объяснить контекст.
Две базы данных находятся на двух разных серверах в одной сети.Существует хранимая процедура, которая копирует данные из таблицы в одной базе данных в таблицу в другой базе данных (две базы данных имеют одинаковую структуру, но содержат разные данные).Пользователи не имеют прав доступа к таблицам напрямую (если только их роль не позволяет им делать это), только через хранимые процедуры.
Теперь проблема.
Когда хранимая процедура выполняется пользователем, он не может выдать сообщение об ошибке о том, что разрешения для целевой таблицы оператора вставки не позволяют пользователю получить к нему доступ.Однако, поскольку у пользователя есть разрешение на выполнение хранимой процедуры, это не должно мешать, не так ли?
выдержка из документации msdn:
"Хранимые процедуры используют преимущества цепочки владенияобеспечить доступ к данным, чтобы пользователям не требовалось явного разрешения для доступа к объектам базы данных. Цепочка владения существует, когда объекты, которые обращаются друг к другу последовательно, принадлежат одному и тому же пользователю. Например, хранимая процедура может вызывать другие хранимые процедуры,или хранимая процедура может обращаться к нескольким таблицам. Если все объекты в цепочке выполнения имеют одного и того же владельца, SQL Server проверяет только разрешение EXECUTE для вызывающей стороны, а не разрешения вызывающей стороны для других объектов. Поэтому необходимо предоставить только разрешения EXECUTEдля хранимых процедур; вы можете отозвать или запретить все разрешения для базовых таблиц. "
Почему тогда происходит сбой выполнения?Все таблицы имеют одного и того же владельца.