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

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
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
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 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. Execute o seguinte código para ver os resultados diferentes dependendo se o DBO é o mesmo ou diferentes:
    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. Limpar os bancos de dados e logons criados para este exemplo:
    USE masterGODROP DATABASE db1DROP DATABASE db2EXEC sp_droplogin Owner1EXEC sp_droplogin Owner2EXEC sp_droplogin TestUserGO					
segurança BOL cruzam em entre propriedade do DBO banco de dados

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 272424 - Última Revisão: 01/16/2015 20:42:10 - Revisão: 4.3

Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbmt kbinfo kbpending KB272424 KbMtpt
Comentários