INF: Cadeia de propriedade do objeto verificação em bancos de dados depende de logon que é mapeado para os proprietários do objeto

Traduções deste artigo Traduções deste artigo
ID do artigo: 272424 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sumário

Manuais online do SQL Server informa que cadeias de propriedade são verificadas para procedimentos armazenados e modos de exibição que entre bancos de dados. Você pode ver isso facilmente quando o proprietário de objetos dependentes em cada banco de dados mapeado para o mesmo logon. Entretanto, se você tiver usuários em ambos os bancos de dados que tenham o mesmo nome de usuário, mas não são mapeados para o mesmo logon (como acontece freqüentemente com o proprietário do banco de dados [DBO]), pode parecer que as cadeias de propriedade são sendo verificadas incorretamente. Por exemplo, se o DBO de cada banco de dados é mapeado para o mesmo logon e o proprietário dos objetos nos bancos de dados é o DBO, as permissões não são verificadas. No entanto, se o DBO de cada banco de dados é mapeado para um logon diferente, as cadeias de propriedade são verificadas. Isso pode acontecer com usuários seja o DBO se os nomes de usuário são diferentes dos seus nomes de logon.

Mais Informações

Um usuário em um banco de dados pode ser concedido permissões em um modo de exibição ou procedimento armazenado. Se esse modo de exibição ou procedimento armazenado acessar objetos em outro banco de dados que pertence a um usuário mapeado para um logon diferente, as permissões de objetos subjacentes são verificadas. Se o usuário não tem permissões para os objetos no outro banco de dados, será retornado o seguinte erro:
Erro 229: % ls permissão negada no objeto ' %. * ls ', banco de dados' %. * ls', proprietário ' %. * ls'.
No entanto, se o logon mapeado subjacente de objetos na consulta for o mesmo, as permissões não são verificadas e executa a consulta sem o erro acima, mesmo se o usuário não tiver permissões para as tabelas base.

Para ver um exemplo disso, siga estas etapas:
  1. Definir um ambiente de reprodução com dois bancos de dados diferentes; db1 é o banco de dados "Base" com os dados e db2 contém um modo de exibição que seleciona da tabela no 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 dependendo 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 os bancos de dados e logons 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

ID do artigo: 272424 - Última revisão: quinta-feira, 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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