INF: 複数のデータベースをチェックする組み合わせオブジェクト所有権、オブジェクト所有者にマップされているログインによって異なります

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

272424
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
概要
SQL Server Books Online ストアド プロシージャおよびビュー間のデータベースの所有権のチェーンがチェックされていることを示しています。各データベース内の従属オブジェクトの所有者が同じログインにマップするときこれを簡単に確認できます。ユーザーではありませんが、同じユーザー名を両方のデータベースである場合は、ただし、その同じログインに (と多くの場合、データベースの所有者を [dbo だ])、ような場合、所有権の継承が誤って検査されていることと思われることがあります。たとえば、各データベースの DBO は、同じログインにマップされて、DBO をデータベース内のオブジェクトの所有者である場合は、アクセス許可はチェックされません。ただし、各データベースの DBO は、別のログインにマップされて場合は、所有権の継承がチェックされます。DBO 以外のユーザーが、ユーザー名がログイン名から異なる場合これ発生します。
詳細
データベース内のユーザーがビューまたはストアド プロシージャに対する権限を付与できます。そのビューまたはストアド プロシージャには、別のログインにマップされているユーザーによって所有されている別のデータベース内のオブジェクトにアクセスする場合は、基になるオブジェクトのアクセス許可がチェックされます。ユーザーのデータベースにオブジェクトへのアクセス許可があるない場合に、次のエラーが返されます。
エラー 229: %ls のアクセス許可オブジェクトに対して拒否 '% * '%1!' '、データベース ' % * '%1!''、所有者' % * ls'。
ただし、クエリ内のオブジェクトの基になっているマップされたログインが同じ場合は、アクセス許可はチェックされません、しが、基になるテーブルへのアクセス許可があるない場合でも、上記エラーが発生せず、クエリを実行します。

これの例を参照するには、次の手順を実行します。
  1. 2 つの異なるデータベースを使用、再現環境設定です。db1 は、「基本」データベース db2 データと db1 内のテーブルから選択するビューが含まれていますです。
    USE masterGOCREATE DATABASE db1CREATE DATABASE db2EXEC sp_addlogin Owner1EXEC sp_addlogin Owner2EXEC sp_addlogin TestUserGO-- setup database #1, DBO is Owner1USE db1EXEC sp_changedbowner Owner1EXEC sp_adduser TestUserCREATE TABLE BaseTable (TableColumn CHAR(20))INSERT BaseTable VALUES ('Select Succeeded')GO-- setup database #2USE db2EXEC sp_adduser TestUserGOCREATE VIEW      CrossDatabaseView           AS SELECT * FROM db1.dbo.BaseTableGOGRANT SELECT  ON CrossDatabaseView           TO publicGO					
  2. DBO が同じかどうかに基づいてまたは別に、それぞれの結果を表示するのには、次のコードを実行します。
    SET NOCOUNT ONGOPRINT '***** results with both DBOs the same *****'PRINT ''USE db2EXEC sp_changedbowner Owner1SETUSER 'TestUser'GOSELECT * FROM CrossDatabaseViewGOSETUSERGOPRINT ''PRINT '***** results with each DBO different *****'PRINT ''USE db2EXEC sp_changedbowner Owner2SETUSER 'TestUser'GOSELECT * FROM CrossDatabaseViewGOSETUSERGO					
  3. この例で作成されるログインとデータベースのクリーニングを行います。
    USE masterGODROP DATABASE db1DROP DATABASE db2EXEC sp_droplogin Owner1EXEC sp_droplogin Owner2EXEC sp_droplogin TestUserGO					
セキュリティについては、BOL クロスで DBO データベースにまたがる所有権の間

警告: この資料は、自動翻訳されています

プロパティ

文書番号:272424 - 最終更新日: 01/16/2015 20:42:06 - リビジョン: 6.0

  • kbnosurvey kbarchive kbinfo kbpending kbmt KB272424 KbMtja
フィードバック