BILGI: Oturum açma, Nesne sahipleri için eşlenen veritabanları arasında denetimi nesne sahipliği zincir bağlı...

Makale çevirileri Makale çevirileri
Makale numarası: 272424 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Özet

SQL Server Books Online'da sahipliği zincirlerini veritabanlarının çapraz görünümler ve saklı yordamlar denetlendiğini belirtir. Aynı oturum açma için her bir veritabanında bağımlı nesnelerin sahibi eşleştirir, bunu kolayca görebilirsiniz. Ancak, her iki veritabanlarında, aynı kullanıcı adını, ancak olmayan kullanıcılar varsa, aynı oturum açma için eşlenen ([DBO] veritabanı sahibi ile sık olur), sahiplik zincirlerini yanlış denetlenen görünebilir. Örneğin, her veritabanı DBO aynı oturum açma için eşleştirilir ve DBO veritabanlarının nesnelerin sahibi olan, izinleri denetlenmez. Ancak, farklı bir oturum açma için her veritabanı DBO eşlenmişse sahipliği zincirlerini denetlenir. Kullanıcı adları, oturum açma adlarından farklıysa, bu kullanıcıların DBO dışındaki oluşabilir.

Daha fazla bilgi

Bir veritabanında BIR kullanıcı, görünüm veya saklı yordam izinleri verilebilir. Bu görünüm veya saklı yordam için farklı bir oturum açma eşleştirilen bir kullanıcının sahibi başka bir veritabanındaki nesnelerin erişirse, alt nesnelerin izinlerini denetlenir. Kullanıcı diğer veritabanı nesneleri için izinleri yoksa, aşağıdaki hata döndürülür:
Nesne üzerinde engellendi 229 hata: % ls izin ' %. * ls ', veritabanı' %. * ls', sahibi ' %. * ls'.
Ancak, temel eşlenen oturum açma sorgudaki nesneleri, aynı ise, izinleri işaretlenmemiş ve kullanıcı temel tabloları izinleriniz varsa, yukarıdaki hatasız sorguyu yürütür.

Bu örnek için aşağıdaki adımları izleyin:
  1. Iki farklı veritabanları; bir üretimi ortamı db1 "Bankası" veritabanı veri ile çalışıyor ve db2 db1 tablosundan seçtiği bir görünüm içerir.
    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 aynı olmasına göre veya farklı farklı sonuçları görmek için şu kodu çalıştırın:
    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. Temizleme veritabanları ve bu örnek için oluşturulan oturum açma:
    USE master
    GO
    DROP DATABASE db1
    DROP DATABASE db2
    EXEC sp_droplogin Owner1
    EXEC sp_droplogin Owner2
    EXEC sp_droplogin TestUser
    GO
    					

Özellikler

Makale numarası: 272424 - Last Review: 5 Şubat 2004 Perşembe - Gözden geçirme: 4.3
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
Anahtar Kelimeler: 
kbmt kbinfo kbpending KB272424 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:272424

Geri Bildirim Ver

 

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