P>

capaSQL15.JPG

Clique aqui para ler todos os artigos desta edição

Gerenciando contas e permissões no SQL 2000 – parte II

Paulo S. Ribeiro

 

Na primeira parte do artigo vimos toda a teoria envolvida na criação e gerenciamento de permissões no SQL Serer 2000. Nessa segunda parte, colocaremos o que foi aprendido em prática, através de uma série de exemplos tirados do cotidiano, e que acho bastante interessante compartilhar com o leitor.

Os exemplos a seguir serão baseados no database db_Teste_SQLMag, localizado no servidor \\SrvTeste, onde foram criadas e populadas as tabelas funcionario e folha_pagto. O script para criação do database e tabelas pode ser visto na Listagem 1. O database e tabelas foram criados com a conta sa ou equivalente (com permissão SysAdmin).

 

Listagem 1: Script para criação do database db_Teste e tabelas funcionario e folha_pagto

create database [db_Teste_SQLMag]  on

(        name = N'db_Teste_SQLMag_Data',

filename = N'c:\sqldbs\data\db_Teste_SQLMag_Data.MDF' ,

size = 1, filegrowth = 10%

)

log  on ( name = N'db_Teste_SQLMag_Log',

filename = N'c:\sqldbs\log\db_Teste_SQLMag_Log.LDF' ,

size = 1,

filegrowth = 10%

)

collate SQL_Latin1_General_CP1_CI_AS

go

use db_Teste_SQLMag

go

create table funcionario

(        id_func         int identity    primary key    ,       

         nome_func   varchar(45) not null ,

         dt_cadastro   smalldatetime not null

)

 

create table folha_pagto

(  id_folha_pagto      int not null identity primary key                                           ,       

   id_func                int not null

        constraint fk_folha_pagto_funcionario foreign key references funcionario(id_func)      ,

  dt_pagto       smalldatetime not null                                                               ,

  vlr_pagto      decimal (10,2) not null

)

 

insert into funcionario (nome_func,dt_cadastro) values ('Marcos'        ,getdate())

insert into funcionario (nome_func,dt_cadastro) values ('Andre'          ,getdate())

insert into funcionario (nome_func,dt_cadastro) values ('Felipe'          ,getdate())

 

insert into folha_pagto (id_func,dt_pagto,vlr_pagto) values (1,getdate(),1000.00)

insert into folha_pagto (id_func,dt_pagto,vlr_pagto) values (2,getdate(),1500.00)

insert into folha_pagto (id_func,dt_pagto,vlr_pagto) values (3,getdate(),2000.00)

go

 

Neste artigo, o leitor fará o papel de DBA na empresa SQLMag S/A, tendo que colocar à prova seus conhecimentos sobre permissões frente a uma série questões. Boa Sorte!

Suas atividades

Tarefa 1: Criar uma conta de login standard para o usuário Marcos, com senha ‘123321’ e para o usuário genérico UserSQLMag no servidor SQL Server \\SrvTeste. Após o logon, Marcos e UserSQLMag deverão entrar automaticamente no database db_TesteSQLMag.

 

Resolução:

exec sp_AddLogin @loginame='Marcos',@passwd='123321',@defdb='db_Teste_SQLMag'

exec sp_AddLogin @loginame='UserSQLMag',@passwd='457890',@defdb='db_Teste_SQLMag'

 

Tarefa 2: Ao fazer um teste no Query Analyzer, usando a conta de login criada anteriormente, Marcos se deparou com a mensagem de erro mostrada na figura 1. Verificar o que está acontecendo.

image002.gif

Figura 1. Mensagem de erro apresentada para o usuário Marcos

 

Resolução:

O problema se resume ao seguinte: a conta de login foi criada, mas o parâmetro @defdb na procedure sp_AddLogin não dá permissão de acesso para o usuário Marcos no database db_TesteSQLMag. Esse parâmetro apenas especifica o nome do database que Marcos deve se conectar após o logon. Para corrigir esse problema, faremos com que Marcos tenha sua entrada liberada no database db_TesteSQLMag, usando o comando sp_GrantDBAccess:

 

use db_Teste_SQLMag

exec sp_GrantDBAccess Marcos

exec sp_GrantDBAccess UserSQLMag

 

Tarefa 3: ...

Quer ler esse conteúdo completo? Tenha acesso completo