Category Archives: Scripts

SQL Saturday 689 – Prague – Scripts and Slides

Hi Everyone,

First of all, I want to thank everyone at my session at SQL Saturday 689 in Prague this last weekend. It was a tremendous pleasure for me to present and share a bit of what I know with all of you.

I also want to say THANK YOU to the Czech BI & SQL Pass User Group for putting this amazing event to the community, I know how much work and effort has to be done to have such a great event. You treated not only myself but all the speakers so well, so thanks again for having me! You guys are great!

I also want to say THANK YOU to the Sponsors, with all your support the event was just awesome!

As I promised during my presentation, I would write this post to share the link to where you can download most of the resources used by myself during the presentation.

https://github.com/marcosfreccia/sql-saturday-689-prague

I would like to also ask you a bit of your time to fill up the session evaluation. This means a lot to all the speakers. Doing that, it helps all of us speakers to improve our presentation, subjects, demos and etc.. Please, please, please!! Do it! The link is below.

https://goo.gl/6ZTfH6

Thanks again and see you in 2018!

Regards,
Marcos Freccia
Data Platform MVP

Deletando informações em batches –

Olá pessoal,

Quando trabalhamos bases de dados muito grandes e criticas é normal que alguma forma de purge (expurgo) seja feita no banco de dados, é melhor para a aplicação e também para o DBA. Porem uma grande preocupação quando vamos falar sobre deletar uma grande quantidade de dados é não prejudicar nosso arquivo Transaction Log para que o mesmo não estoure o espaço em disco, como também não bloqueie nossa aplicação que esta tentando inserir ou atualizar dados na base. Alem de tudo isso nos preocupamos com performance, pois uma grande operação de delete poderia impactar todo o nosso ambiente.

Pensando nisso criei um script bem simples, mas que pode te ajudar no momento de realizar esse expurgo da base de dados. Read the rest of this entry

Recycle ErrorLog baseado no tamanho do arquivo

Olá pessoal,

Estou aqui para divulgar um script que criei, onde baseado no tamanho do arquivo do ErrorLog realizamos ou não a limpeza do mesmo. O mesmo foi criado em PowerShell e é bastante simples, pois meu conhecimento nele é relativamente baixo. No meu script o tamanho do arquivo foi  setado para 250MB, mas você pode edita-lo para acomodar a sua necessidade.

Não vou colar o script aqui na postagem, mas sim o link para o meu OneDrive onde o mesmo se encontra.

http://1drv.ms/1B02XA0

Para executar o script é bastante simples, bastando apenas criar um job no SQL Server Agent onde o step deverá executar código PowerShell. Você pode consultar essa documentação abaixo para a criação do Job.

https://msdn.microsoft.com/en-us/library/hh213688.aspx

 

Espero que gostem do script, e se alguem não estiver conseguindo realizar o download do arquivo, deixe um comentário que eu poderei ajustar.

 

Abraços,
Marcos Freccia
SQL Server MVP

Procurando por não sysadmin job owners

Olá pessoal,

Na semana passada tive uma demanda para retornar uma lista de Jobs onde os owners não estavam na role sysadmin, podendo trazer assim algum risco para a execução do mesmo. Para não passar de job a job procurando pela informação, criei um script bastante simples para resolver esse problema. Espero que gostem!

select Name,SUSER_SNAME(owner_sid) as JobOwner
from msdb.dbo.sysjobs
where enabled = 1
and IS_SRVROLEMEMBER(‘sysadmin’,SUSER_SNAME(owner_sid)) <> 1

O resultado retornado é este logo abaixo. Assim, vocês podem analisar de uma maneira facil e rápida, se devemos trocar o Job Owner do job em questão ou não.

image

 

Espero que tenham gostado.

Marcos Freccia
SQL Server MVP

O que você precisa saber sobre sp_estimate_data_compression_savings

Olá pessoal,

Recentemente tenho trabalhado em alguns scripts que utilizam a sp_estimate_data_compression_savings para verificar possíveis ganhos com compressão. Acontece que utilizar essa procedure em grandes ambientes e até mesmo com diferentes aplicações, traz consigo uma série de implicações que você pode ter no momento de executá-la.

1) Existe um bug ja registado aqui onde no momento da verificação de uma possível compressão, qualquer indice criado em uma coluna do tipo timestamp faz com que a procedure seja abortada e encerre sua execução. O problema não impede que você faça a compressão da mesma, apenas te impede de executar a procedure para estimar. Até o momento o problema foi corrigido apenas para SQL 2012.

2) Outro problema encontrado, é que não é possivel realizar compressão em indices que contenham colunas do tipo SPARSE. Então se a procedure sp_estimate_data_compression_savings também interrompe a sua execução quando encontrar esse problema, e isso se extende no momento que você tenta realizar o rebuild do indice para então realizar a compressão.

Ainda estou enfrentando alguns outros problemas, que estou verificando o comportamento. Então assim que encontrar, prometo atualizar esse post.

Em um futuro proximo, posso também ensinar como criar uma solução de reporting para compressão.

Espero que tenham gostado e até a proxima,
Marcos Freccia

Script – Obtendo Max Server Memory e Total Server Memory

Pessoal,

Compartilhando apenas um pequeno script que me ajudou a pegar de alguns servidores o valor configurado no max server memory e também recuperar o total de memoria que o servidor possui. Ele faz a leitura da procedure sp_configure e também da DMV sys.dm_os_sys_info.

O script funciona para SQL 2005, 2008 e 2008 R2. Para funcionar em SQL 2012 e 2014, você precisa fazer uma pequena modificação que eu mostro nesse link abaixo, onde vocês possam realizar o download do mesmo.

http://gallery.technet.microsoft.com/scriptcenter/Get-Max-Server-Memory-and-c092066e

Espero que seja util para alguem.

Abraços,
Marcos Freccia

Retornando o status do serviço via PowerShell

Olá pessoal,

Passando aqui apenas para compartilhar mais um simples script PowerShell com vocês. A intenção do script é varrer uma lista de servidores de SQL Server e retornar apenas os serviços que estiverem com o status de stopped. O Script utiliza o cmdlet Get-Service. Read the rest of this entry

Retornando contas de serviço via PowerShell

Olá Pessoal,

Meus skills de desenvolvedor são horriveis, mas me deparei com uma situação no trabalho aonde eu não poderia realizar tal tarefa manualmente, pois seria muito dificil e muito chato de realizar e partindo dessa ideia me surgiu então o PowerShell. Não preciso falar muito como o PowerShell ajuda no dia-a-dia de um Administrador de Banco de Dados, ou de qualquer outra tecnologia Microsoft.

Para SQL Server não preciso mencionar que se alguem quiser aprender sobre PowerShell o blog do Laerte Junior (Twitter|Blog) onde você encontra muita coisa boa. Voltando para o meu problema eu precisava realizar a seguinte tarefa. Read the rest of this entry

Compilando um codigo C# para o SQL Server

Olá pessoal,

Esses dias precisava gerar uma DLL de um codigo C# para um projeto que estou fazendo no SQL Server. Como eu não sou um expert em desenvolvimento eu pedi para que alguns dos meus amigos DEV’s me ajudassem nisso. Até o momento eu pensava que compilar um codigo e gerar uma DLL só era possivel se você tivesse o Visual Studio para fazer isso.

Depois de algumas pesquisas e até mesmo entender um pouco mais sobre CLR e inclusive .Net, vi que se você tiver apenas o .Net Framework 3.5 instalado na sua maquina você já consegue gerar uma DLL. Abaixo então vou mostrar como realizar o procedimento. Read the rest of this entry

O ultimo backup full executado com sucesso

Olá pessoal,

Após algum tempo sem passar por aqui, venho compartilhar um pequeno script que criei para pegar o último backup full que aconteceu para cada base de dados na instancia. O script é bastante simples e com certeza, você poderá encontrar outros pela internet, mas como sempre gosto de compartilhar algo que crio, aqui estou.

O script executa a leitura na tabela backupset do banco de dados msdb procurando pelo último backup full completo. Read the rest of this entry