Arquivo por tag: sys.tables

abr 21

Fragmentação das bases

No artigo “Seu job de rebuild demora muito” explicamos a diferença entre os principais tipos de fragmentação das bases do SQL Server, a diferença entre REBUILD e REORGANIZE, o que é FILL FACTOR, além de um script que faz REORGANIZE quando a fragmentação externa é inferior a 30% e REBUILD se for maior. Também explica …

Continue lendo »

jan 22

Listar todas as bases e data do último backup

    Para saber quando foi feito o último backup de todas as bases da sua instância, este script do Pinal Dave resolve de forma simples e eficaz:         SELECT sdb.Name AS DatabaseName, COALESCE(CONVERT(VARCHAR(12), MAX(bus.backup_finish_date), 101),’-‘) AS LastBackUpTime FROM sys.sysdatabases sdb LEFT OUTER JOIN msdb.dbo.backupset bus ON bus.database_name = sdb.name GROUP BY …

Continue lendo »

jun 28

Procedure não documentada sp_MSforeachdb

Muito útil em servidores com muitas bases, vamos aprender uma procedure não documentada pela Microsoft chamada sp_MSforeachdb. Como o próprio nome sugere, é utilizada para executar determinada query para cada base atachada na instância. Para entendermos melhor, vamos ver na prática como funciona. No exemplo abaixo, observe que  em vermelho somente o que faz parte …

Continue lendo »

jun 15

Identificando tabelas mais usadas da instância

Considero este um dos posts mais importantes que já escrevi. Frequentemente precisamos saber qual a tabela mais utilizada ou qual o índice mais utilizado para tomarmos as providências de melhoria na performance como criar um arquivo de dados exclusivo para a tabela, verificar se o índice está apropriado, etc. Esta semana vimos no artigo Encontrando …

Continue lendo »

jun 14

Espaço utilizado por cada tabela

Hoje precisei fazer um levantamento do espaço utilizado por cada tabela da base. Encontrei o script abaixo no post do Greg Robidoux do MSSQL Tips:   BEGIN try   DECLARE @table_name VARCHAR(500) ;   DECLARE @schema_name VARCHAR(500) ;   DECLARE @tab1 TABLE(          tablename VARCHAR (500) collate database_default  ,       schemaname VARCHAR(500) collate database_default  );   DECLARE  @temp_table TABLE (              tablename sysname  ,       row_count INT  ,       reserved VARCHAR(50) collate database_default  ,       data VARCHAR(50) collate database_default  ,       index_size VARCHAR(50) collate database_default  ,       unused VARCHAR(50) collate database_default   );   INSERT INTO @tab1   SELECT t1.name  ,       t2.name   FROM sys.tables t1   INNER JOIN sys.schemas t2 ON ( t1.schema_id = t2.schema_id );     DECLARE c1 CURSOR FOR   SELECT t2.name + ‘.’ + t1.name    FROM sys.tables t1   INNER JOIN sys.schemas t2 ON ( t1.schema_id = t2.schema_id );     OPEN c1;   FETCH NEXT FROM c1 INTO @table_name;  WHILE @@FETCH_STATUS = 0   BEGIN            SET @table_name = REPLACE(@table_name, ‘[‘,”);   …

Continue lendo »