Articles

A concessão de Vista de Definição de Permissão para um Usuário ou Função no SQL Server

Posted by admin

Por: Nitin Rana | Atualizado em: 2008-09-29 | Comentários (7) | Relacionados: Mais > modos de exibição

Problema

No SQL Server 2005 por padrão, os usuários de um banco de dados que estão apenas no publicrole não é possível ver as definições de um objeto enquanto estiver usando sp_help, sp_helptext orthe object_definition função. Algumas vezes isso é útil para permitir que os desenvolvedores ou outros não-administradores vejam as definições de objetos em um banco de dados, então eles podem criar objetos similares em um banco de dados de teste ou desenvolvimento., Em vez de autorizações de nível mais elevado, existe uma forma de permitir aos utilizadores que só têm acesso público a capacidade de ver definições de objectos?

Solution

Ao emitir sp_help, sp_helptext ou usando a função object_definition () ocorrerão os seguintes erros no SQL 2005 se o utilizador não tiver permissões para ver os meta-dados do objecto. Eis alguns exemplos destes erros.,

EXEC sp_help Customer

Retorna o seguinte:

Msg 15009, Level 16, State 1, Procedure sp_help, Line 66
The object 'Customer' does not exist in database 'MSSQLTIPS' or is invalid for this operation.

Uma escolha contra a OBJECT_DEFINITION função irá retornar um valor NULL ifthe usuário não tem permissão para ver os dados de meta.

SELECT object_definition (OBJECT_ID(N'dbo.vCustomer'))

Retorna o seguinte:

NULL

Por padrão, os usuários foram capazes de ver definições de objectos no SQL Server 2000, butin SQL Server 2005, esta funcionalidade foi removida para permitir que uma outra camada de segurança., Usando um novo recurso chamado definição de VIEW, é possível permitir aos usuários que só têm acesso público a capacidade de ver definições de objetos., emitir a seguinte declaração:

USE master GO GRANT VIEW ANY DEFINITION TO User1

Para ativar esse recurso para um banco de dados e para todos os usuários que têm os accessyou pode emitir os seguintes:

USE AdventureWorks GO GRANT VIEW Definition TO PUBLIC

Se você deseja conceder acesso apenas de utilizador “Utilizador1” do banco de dados que você pode fazer thefollowing:

USE AdventureWorks GO GRANT VIEW Definition TO User1

Para desactivar esta funcionalidade, você deve emitir o REVOGAR commandsuch como um dos seguintes:

USE master GO REVOKE VIEW ANY DEFINITION TO User1 -- or USE AdventureWorks GO REVOKE VIEW Definition TO User1 

Se você deseja ver quais os utilizadores que têm este acesso, você pode emitir o seguinte no banco de dados.,

USE AdventureWorks GO sp_helprotect

Aqui estão duas linhas que mostram onde a acção de definição da vista foi concedida. O primeiro em um objeto particular e o segundo para todos os objetos no banco de dados.

Para levar isso um passo adiante, se você não deseja conceder essa permissão allobjects o seguinte procedimento armazenado pode ser utilizado para conceder a todos os objectsor particular de objetos em um banco de dados., Esta é a configuração actual para todos os tipos de objectos, mas isto pode ser alterado se incluir menos tipos de objectos na cláusula onde.

para usar isso, você pode criar este procedimento armazenado em suas bases de dados de usuários e, assim, conceder as permissões para o Usuário apropriado, em vez de fazer as coisas wideopen para um usuário ou todos os usuários. Apenas substitua ChangeToYourDatabaseName para a sua base de dados antes de criar.

Uma vez que este procedimento tenha sido criado, você pode conceder as permissões da seguinte forma.Este exemplo concede definição de view a um usuário “userXYZ” na Base de dados “MSSQLTIPS” para todos os tipos de objetos que foram selecionados.,s Online:

  • sp_helptext
  • sp_help
  • object_definition
  • Object_Id
  • Create Procedure
  • Schema_Name
  • Schema_ID
  • Substituir
  • GRANT
  • DEFINIÇÃO do modo de EXIBIÇÃO

Última actualização: 2008-09-29

Sobre o autor
Nitin Rana é um Microsoft Certified Professional e, atualmente, tem mais de 12 anos de experiência em TI com os componentes principais do SQL server.,
View all my tips
Related Resources

  • More Database Developer Tips…

Leave A Comment