P>
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.
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: ...