Como delegar acesso de leitura aos jobs de um servidor

Publicado por Alexandre Catão em 26/05/2009 na(s) categoria(s): SQL SERVER

Tags: ,

Pessoal,

Boa tarde. Hoje estava precisando dar acesso a um usuário para somente visualizar os jobs, pesquisando um pouco descobri que é possível e muito simples.

Segue o cenário:

Você tem a base de dados A onde o usuário X é dbo, mas não é sysadmin, e você precisa que ele visualize os jobs, sem poder criar, alterar, executar ou deletar os jobs.

Acessa o servidor pelo SQL Management Studio, vá até a base msdb > Security > Users e clique com o botão direito,  clique em New User.

No campo Login name coloque o usuário que poderá ver os jobs como leitura e em Role Members escolha a opção SQLAgentReader Role e clique em OK.

Simples assim…. hehehee

Existe ainda outras opções, para mais informações acesse http://msdn.microsoft.com/en-us/library/ms188283(SQL.90).aspx

Até a próxima dica.

Alexandre Catão

Limpar o plano de execução

Publicado por Alexandre Catão em 24/10/2008 na(s) categoria(s): SQL SERVER

Tags: , , , ,

Esta semana eu estava fazendo o papel de QA na equipe em que trabalho.

Como todo mundo sabe (acredito eu) quando você executa uma query, o seu plano de execução vai para uma área de cache, caso execute a mesma query e o plano de execução esteja em cache, a engine do sql irá usar este mesmo plano de execução, desta forma o tempo de execução será menor ou igual a execução anterior (isso se o plano estiver em cache).

Nos testes que estava fazendo surgiu a necessidade de limpar o plano de execução de uma determinada query, perguntando para a DBA da Locaweb a Paula Oliveira, ela me disse que poderia usar o seguinte comando:

- Para descobrir o plano de execução:

SELECT

plan_handle, st.text

FROM

sys.dm_exec_cached_plans 

CROSS APPLY

sys.dm_exec_sql_text(plan_handle) AS st

WHERE

text LIKE N’select * from dim_%‘;

Com esta query estou procurando os planos de execução em cache de querys onde o from tenha dim_ alguma coisa.

O resultado foi:

plan_handle                                                                                                                        text

————————————————– ———————————-

0×06000600E80F3E19B881309B000000000000000000000000   select * from dim_servico

(1 row(s) affected)

Agora que tenho o plan_handle já posso irá para o próximo passo.

- Para limpar o cache

DBCC FREEPROCCACHE (0×06000600E80F3E19B881309B000000000000000000000000);

Executando-o, o sql irá eliminar o plano de execução da query select * from dim_servico, se quiser limpar todo o cache execute somente DBCC FREEPROCCACHE.

Obs: No SQL 2005 somente é possível limpar todo o cache (DBCC FREEPROCCACHE).

Utilize com moderação pois a limpeza constante poderá gerar lentidão no SQL dependendo da quantidade de vezes que uma mesma query é utilizada pelos sistemas.

Para mais informações sobre este comando no SQL 2008 e no SQL 2005.

Até mais e um ótimo fim de semana.

Alexandre Catão