Apos 2 meses sem novas postagens, hoje vou mostrar um script muito util para nos DBAs SQL Server. Usei como base o script do artigo Unused Indexes in your databases (Portal SQL Server Central)O Script/*Parte(A) identifica indices sem entrada na DMV 'dm_db_index_usage_stats',isto indica que o indice nunca foi utilizado desde a inicializacao do SQL Server*/SELECT DB_NAME(), OBJECT_NAME(i.object_id) AS 'Table', ISNULL(i.name, 'heap') AS 'Index', x.used_page_count AS 'SizeKB' FROM sys.objects o INNER JOIN sys.indexes i ON i.[object_id] = o.[object_id] LEFT JOIN sys.dm_db_index_usage_stats s ON i.index_id = s.index_id and s.object_id = i.object_id LEFT JOIN sys.dm_db_partition_stats x ON i.[object_id] = x.[object_id] AND i.index_id = x.index_id WHERE OBJECT_NAME(o.object_id) IS NOT NULL AND OBJECT_NAME(s.object_id) IS NULL AND o.[type] = 'U' AND ISNULL(i.name, 'heap') <> 'heap'UNION ALL/*Parte(B) identifica indices que nao sao mais utilizados desde a inicializacao da instancia do SQL Server*/SELECT DB_NAME(), OBJECT_NAME(i.object_id) AS 'Table', ISNULL(i.name, 'heap') AS 'Index', x.used_page_count AS 'SizeKB' FROM sys.objects o INNER JOIN sys.indexes i ON i.[object_id] = o.[object_id] LEFT JOIN sys.dm_db_index_usage_stats s ON i.index_id = s.index_id and s.object_id = i.object_id LEFT JOIN sys.dm_db_partition_stats x ON i.[object_id] = x.[object_id] AND i.index_id = x.index_id WHERE user_seeks = 0 AND user_scans = 0 AND user_lookups = 0 AND o.[type] = 'U' AND ISNULL(i.name, 'heap') <> 'heap' ORDER BY 2 ASCPara o script foram utilizadas as seguintes referencias: sys.objectshttp://msdn.microsoft.com/pt-br/library/ms177596.aspxsys.indexeshttp://msdn.microsoft.com/pt-br/library/ms190283.aspxsys.dm_db_index_usage_statshttp://msdn.microsoft.com/pt-br/library/ms188755.aspxsys.dm_db_partition_statshttp://msdn.microsoft.com/pt-br/library/ms187737.aspxUnused Indexes in your databaseshttp://www.sqlservercentral.com/scripts/Indexing/72486/Aproveitei o script e criei um report dinamico, possibilitando escolher a instancia e databases que serao analisados. Na proxima semana crio um post com o passo a passo de como criar este report.Espero que o script seja util para voce amigo(a) DBA.Ate mais,Bruno Santos Isto causa uma polemica, rsrs. Mas vamos ver.Como amante do mundo da bola, por algum tempo penso na criacao de uma escalacao dos jogadores aposentados que para mim foram os melhores, e hoje e o dia.Meu criterio foi identificar o melhor momento de cada um nos seus clubes e/ou selecao, e tambem jogadores que brilharam a partir de 1990, assim, voces verao ausente da minha 'convocacao', nomes como Romario, Lothar Matthaus, Maldini, Bebeto e outros 'monstros'.Tambem por estar na sua ultima temporada, considerei o super goleiro Marcos do Palmeiras como aposentado.Entao chega de justificativas, abaixo os maiores de todos os tempos: 1-Marcos; 2-Cafu; 3-Mauro Galvao; 4-Gamarra; 6-Sorin; 5-Fred Rincon; 8-Zinedine Zidane; 11-Romario; 10-Diego Maradona; 7-Edmundo; 9-RonaldoAbracosBruno Santos Companheiros DBAs, boa tardeHoje vou compartilhar mais um script com voces.Um amigo me perguntou esta semana sobre a possibilidade de criar um script para automatizar uma atividade diaria. Basicamente ele queria particionar o conteudo de um arquivo em varios arquivos, como profissional da area da arte (TI), prontamente disse que seria possivel, a partir dai abri o meu SSMS (SQL Server Management Studio) para quebrar a cabeca.Exemplo:Original.txt11111111112222222222Arquivo1.txt1111111111Arquivo2.txt2222222222Apos algumas poucas horas de queima neuronios e simulacoes consegui criar uma stored procedure automatizando a atividade do meu amigo, possibilitando passar como parametros o caminho do arquivo fonte, o nome do arquivo com sua extensao, o caminho de destino dos arquivos particionados e o numero de linhas para cada arquivo.Para usar a procedure sera necessario criar uma table que sera o repositorio das informacoes do arquivo fonte,