2017-05-01 4 views
-3

Comment sauvegarder et supprimer la base de données SQL Server si la base de données date de création est plus de 3 moisComment sauvegarder et supprimer la base de données SQL Server si la base de données date de création est plus de 3 mois

+3

http://stackoverflow.com/questions/18876078/list-all-the-databases-on-one-sql-server-in-the-order-they-were-created vous se rapproche identifier les bases de données. http://stackoverflow.com/questions/122690/what-is-a-simple-command-line-program-or-script-to-backup-sql-server-databases vous montre comment sauvegarder .... https: //dba.stackexchange.com/questions/34264/how-to-force-drop-database-in-sql-server-2008/34265 vous montre comment lâcher .... Veuillez passer quelques minutes à chercher ou à résoudre le problème bas et rechercher les composants et le mettre ensemble! – xQbert

Répondre

0

Soyez prudent en utilisant quelque chose comme ça, ce script pourrait vous mettre dans le pétrin. Notez que je ne sélectionne que le paramètre @tsql, j'ai commenté l'EXEC afin que vous puissiez voir ce qui serait en train d'être exécuté en premier.

/* Create a cursor to iterate through the databases you want to backup and delete */ 

DECLARE @tsql nvarchar(max) 
DECLARE @dbname varchar(500) 

DECLARE MyCursor CURSOR STATIC FORWARD_ONLY 
FOR 
SELECT [name] 
FROM sys.databases 
WHERE create_date < DATEADD (M, -3, GETDATE()) 
AND [name] NOT IN ('master', 'model', 'msdb', 'tempdb') 

OPEN MyCursor 

WHILE (1=1) 
BEGIN 
DECLARE 
    @Date varchar(20) = GETDATE() 

FETCH NEXT FROM MyCursor INTO @dbname 
IF @@FETCH_STATUS <> 0 BREAK 

SET @tsql = 'BACKUP DATABASE [' + @dbname + '] TO DISK = N''S:\Backups\' + @dbname + ' ' + @Date + '.bak'' WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10' 
SELECT @tsql; 
-- EXEC sp_executesql @tsql 
SET @tsql = 'ALTER DATABASE [' + @dbname + '] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE [' + @dbname + ']' 
SELECT @tsql 
-- EXEC sp_executesql @tsql 

END 
CLOSE MyCursor; 
DEALLOCATE MyCursor;  
GO 
+0

Génial, merci beaucoup. –