INF: Cadeia de propriedade de objecto verificação em bases de dados depende do início de sessão que está mapeado para proprietários de objectos

Traduções de Artigos Traduções de Artigos
Artigo: 272424 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

SQL Server Books Online indica que as cadeias de propriedade são verificadas para procedimentos armazenados e vistas que passam bases de dados. Pode ver este facilmente quando o proprietário de objectos dependentes em cada base de dados mapeia para o mesmo início de sessão. No entanto, se tiver utilizadores em ambas as bases de dados que tenham o mesmo nome de utilizador, mas não são mapeadas para o mesmo início de sessão (frequentemente como acontece com o proprietário da base de dados [DBO]), poderá parecer que cadeias de propriedade estão a ser verificadas incorrectamente. Por exemplo, se DBO de cada base de dados é mapeado para o mesmo início de sessão, o proprietário dos objectos na base de dados é o DBO permissões não estão seleccionadas. No entanto, se DBO de cada base de dados for mapeado para um início de sessão diferente, cadeias de propriedade são verificadas. Isto pode acontecer com utilizadores que não o DBO se os nomes de utilizador são diferentes dos nomes de início de sessão.

Mais Informação

Um utilizador com uma base de dados pode ser concedido permissões num vista ou procedimento armazenado. Se essa vista ou procedimento armazenado aceder a objectos de outra base de dados que é possuído por um utilizador mapeado para um início de sessão diferente, as permissões de objectos subjacentes são verificadas. Se o utilizador não tem permissões para os objectos na outra base de dados, é devolvido o seguinte erro:
Erro 229: % ls permissão negada no objecto ' %. * ls % ', da base de dados'. * 'ls, proprietário ' %. * 'ls.
No entanto, se o início de sessão mapeado subjacente dos objectos na consulta é a mesma, permissões não estão seleccionadas e executa a consulta sem o erro acima, mesmo se o utilizador não tiver permissões para as tabelas subjacentes.

Para ver um exemplo desta situação, siga estes passos:
  1. Conjunto de um ambiente de reprodução com duas bases de dados diferentes; db1 é a base de dados "Base" com os dados e db2 contém uma vista que selecciona a partir da tabela 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. Execute o seguinte código para ver os resultados diferentes consoante se o DBO é o mesmo ou diferentes:
    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. Limpar as bases de dados e inícios de sessão criados para este exemplo:
    USE master
    GO
    DROP DATABASE db1
    DROP DATABASE db2
    EXEC sp_droplogin Owner1
    EXEC sp_droplogin Owner2
    EXEC sp_droplogin TestUser
    GO
    					

Propriedades

Artigo: 272424 - Última revisão: 5 de fevereiro de 2004 - Revisão: 4.3
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
Palavras-chave: 
kbmt kbinfo kbpending KB272424 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 272424

Submeter comentários

 

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