INF: 개체 검사 데이터베이스 간 소유권 체인 개체 소유자 매핑된 경우 로그인 따라 다르다

기술 자료 번역 기술 자료 번역
기술 자료: 272424 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

요약

SQL Server 온라인 저장된 프로시저 및 데이터베이스 간 뷰 소유권 체인을 체크 의미입니다. 각 데이터베이스의 종속 개체의 소유자가 같은 로그인 매핑하는 때 이를 쉽게 확인할 수 있습니다. 그러나 사용자가 동일한 사용자 이름을 있지만 없는 두 데이터베이스에 있으면 동일한 로그인 매핑된 데이터베이스 소유자를 [DBO] 자주 발생하는 소유권 체인을 잘못 검사 중인 있는 것처럼 보일 수 있습니다. 예를 들어, 각 데이터베이스가 DBO 같은 로그인 매핑되고 해당 DBO 데이터베이스의 개체 소유자입니다 경우 사용 권한은 확인하지 않습니다. 그러나 각 데이터베이스가 DBO 다른 로그인 매핑되면 소유권 체인은 확인됩니다. 사용자 이름이 사용자의 로그인 이름을 서로 다른 경우 해당 DBO 이외의 다른 사용자와 이 발생할 수 있습니다.

추가 정보

데이터베이스 에서 사용자 보기 또는 저장된 프로시저에 대한 사용 권한은 부여할 수 있습니다. 해당 뷰 또는 저장된 프로시저를 다른 로그인에 매핑된 사용자가 소유한 다른 데이터베이스의 개체에 액세스하는 경우, 원본으로 사용하는 개체의 사용 권한은 검사됩니다. 사용자가 다른 데이터베이스에 있는 개체에 사용 권한이 없는 경우 다음과 같은 오류가 반환됩니다.
229 오류: %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 - 마지막 검토: 2004년 2월 5일 목요일 - 수정: 4.3
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
키워드:?
kbmt kbinfo kbpending KB272424 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

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