INF: Проверка по базам данных цепочки владения объекта зависит от имени входа, сопоставленного владельцы объектов

Переводы статьи Переводы статьи
Код статьи: 272424 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Аннотация

Электронная документация по SQL Server указывается проверку цепочки владения для хранимых процедур и представлений, которые пересекают баз данных. Вы видите это легко при сопоставляет имя пользователя владельца зависимых объектов в каждой базе данных. Тем не менее, если у вас есть пользователи в обеих базах данных, которые имеют одинаковое имя пользователя, но не сопоставляется имя пользователя (как часто происходит с владельцем базы данных [DBO]), он может показаться, что неправильно проверки цепочки владения. Например если то же имя входа сопоставлено DBO каждой базы данных и владельца объектов в базах данных является DBO, разрешения не проверяются. Тем не менее если другое имя входа сопоставляется DBO каждой базы данных, проверяются цепочки владения. Это может произойти с пользователями, отличный от DBO, если имена пользователей, отличаются от имен входа.

Дополнительная информация

Пользователь базы данных могут быть предоставлены разрешения на представление или хранимая процедура. Если это представление или хранимая процедура обращается к объектам в другой базе данных, которой принадлежит пользователь, сопоставленный другого имени входа, проверяются разрешения базовых объектов. Если у пользователя нет разрешения на объекты в другой базе данных, возвращается следующее сообщение об ошибке:
Ошибка 229: разрешение % ls запрещено для объекта "%. * ls, базы данных" %. * ls', владельца "%. * ls.
Если базовый сопоставленному имени входа объектов в запросе уже существует, разрешения не проверяются, а запрос выполняется без ошибки выше даже в том случае, если пользователь не имеет разрешений на базовые таблицы.

Для просмотра примера, выполните следующие действия.
  1. Настройка среды воспроизведение с двумя разными базами данных; DB1 является база данных «Базовый» с данными и db2 содержит представление, которое выбирает из таблицы в db1.
    USE master
    GO
    CREATE DATABASE db1
    CREATE DATABASE db2
    EXEC sp_addlogin Owner1
    EXEC sp_addlogin Owner2
    EXEC sp_addlogin TestUser
    GO
    -- setup database #1, DBO is Owner1
    USE db1
    EXEC sp_changedbowner Owner1
    EXEC sp_adduser TestUser
    CREATE TABLE BaseTable (TableColumn CHAR(20))
    INSERT BaseTable VALUES ('Select Succeeded')
    GO
    -- setup database #2
    USE db2
    EXEC sp_adduser TestUser
    GO
    CREATE VIEW      CrossDatabaseView           AS SELECT * FROM db1.dbo.BaseTable
    GO
    GRANT SELECT  ON CrossDatabaseView           TO public
    GO
    					
  2. Выполните следующий код, чтобы увидеть различные результаты в зависимости от DBO является ли же или другой:
    SET NOCOUNT ON
    GO
    PRINT '***** results with both DBOs the same *****'
    PRINT ''
    USE db2
    EXEC sp_changedbowner Owner1
    SETUSER 'TestUser'
    GO
    SELECT * FROM CrossDatabaseView
    GO
    SETUSER
    GO
    
    PRINT ''
    PRINT '***** results with each DBO different *****'
    PRINT ''
    USE db2
    EXEC sp_changedbowner Owner2
    SETUSER 'TestUser'
    GO
    SELECT * FROM CrossDatabaseView
    GO
    SETUSER
    GO
    					
  3. Очистка базы данных и имена входа, созданные для этого примера:
    USE master
    GO
    DROP DATABASE db1
    DROP DATABASE db2
    EXEC sp_droplogin Owner1
    EXEC sp_droplogin Owner2
    EXEC sp_droplogin TestUser
    GO
    					

Свойства

Код статьи: 272424 - Последний отзыв: 5 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
Ключевые слова: 
kbinfo kbpending kbmt KB272424 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:272424

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com