Harima

Pegao al tarro
Se incorporó
15 Mayo 2008
Mensajes
3.930
Chicos un par de script para flojos SQL 2005/2008 (no me acuerdo si había alguna que no funcionara, cuando las pruebe les aseguro en que versión funciona, pero deberían funcionar en las dos)

Porcentaje de las tareas en segundo plano
(ejemplo cuando estas haciendo una reindexación)
Código:
SELECT percent_complete, start_time, status, command, estimated_completion_time, cpu_time, total_elapsed_time
FROM sys.dm_exec_requests
ORDER BY 1 DESC


Respaldar todas las Bases de datos
(excluye sistema master, model, msdb, tempdb)
Código:
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name

SET @path = 'D:\BackUP\'

SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)

DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')

OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @name 

WHILE @@FETCH_STATUS = 0 
BEGIN 
       SET @fileName = @path + @name + '.BAK'
       BACKUP DATABASE @name TO DISK = @fileName

       FETCH NEXT FROM db_cursor INTO @name 
END 

CLOSE db_cursor 
DEALLOCATE db_cursor

Reducir log
Código:
DECLARE @dbName AS VARCHAR(100)   
DECLARE @cmd AS VARCHAR(MAX)   
DECLARE c1 CURSOR FOR 
SELECT name FROM master..sysdatabases sdb   
WHERE name NOT IN ('master','model','msdb','tempdb','distrbution','ReportServer','ReportServerTempDB')     
ORDER BY name 
 
OPEN c1   
 
FETCH NEXT FROM c1   
INTO @dbName   
 
WHILE @@FETCH_STATUS = 0   
BEGIN 
    --Establecer la base de datos en uso   
    SET @cmd = 'USE ' + @dbName   
 
    --Si se establece el modo de restauración a simple, las partes inactivas del log de transacción deben ser borradas   
    --Este comando reducirá el archivo de log un poco   
    SET @cmd = @cmd + ' ALTER DATABASE ' + @dbName + ' SET RECOVERY SIMPLE' 
 
    --Obtener el nombre de log de la base de datos   
    SET @cmd = @cmd + ' DECLARE @logFile AS NVARCHAR(1000)' 
    SET @cmd = @cmd + ' SELECT @logFile = name FROM ' + @dbName + '.sys.database_files WHERE type_desc = ''LOG''' 
    --Cambiar el modo de restauración a Simple no es suficiente, esto reduce el log a 1 MB   
    SET @cmd = @cmd + ' DBCC SHRINKFILE (@logFile , 1)' 
 
    EXEC(@cmd)   
 
    FETCH NEXT FROM c1   
    INTO @dbName   
END 
 
CLOSE c1   
DEALLOCATE c1

reconstruir todos los indices de todas las bases de datos
Código:
DECLARE @Database VARCHAR(255)  
DECLARE @Table VARCHAR(255)  
DECLARE @cmd NVARCHAR(500)  
DECLARE @fillfactor INT

SET @fillfactor = 90

DECLARE DatabaseCursor CURSOR FOR  
SELECT name FROM master.dbo.sysdatabases  
WHERE name NOT IN ('master','msdb','tempdb','model','distribution')  
ORDER BY 1  

OPEN DatabaseCursor  

FETCH NEXT FROM DatabaseCursor INTO @Database  
WHILE @@FETCH_STATUS = 0  
BEGIN  

   SET @cmd = 'DECLARE TableCursor CURSOR FOR SELECT ''['' + table_catalog + ''].['' + table_schema + ''].['' +
  table_name + '']'' as tableName FROM [' + @Database + '].INFORMATION_SCHEMA.TABLES
  WHERE table_type = ''BASE TABLE'''  

   -- create table cursor  
   EXEC (@cmd)  
   OPEN TableCursor  

   FETCH NEXT FROM TableCursor INTO @Table  
   WHILE @@FETCH_STATUS = 0  
   BEGIN  

       IF (@@MICROSOFTVERSION / POWER(2, 24) >= 9)
       BEGIN
           -- SQL 2005 or higher command
           SET @cmd = 'ALTER INDEX ALL ON ' + @Table + ' REBUILD WITH (FILLFACTOR = ' + CONVERT(VARCHAR(3),@fillfactor) + ')'
           EXEC (@cmd)
       END
       ELSE
       BEGIN
          -- SQL 2000 command
          DBCC DBREINDEX(@Table,' ',@fillfactor)  
       END

       FETCH NEXT FROM TableCursor INTO @Table  
   END  

   CLOSE TableCursor  
   DEALLOCATE TableCursor  

   FETCH NEXT FROM DatabaseCursor INTO @Database  
END  
CLOSE DatabaseCursor  
DEALLOCATE DatabaseCursor
 

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.052
Buena compilación de scripts

Enviado desde mi MotoE2 mediante Tapatalk
 
Upvote 0
Subir