Nous avons vu la semaine dernière comment obtenir les informations de base pour le contenu d’un serveur SQL :
Ainsi, on avec ce script, on en connait plus sur notre serveur, mais il arrive parfois que la configuration de ce serveur soit vraiment à refaire pour tout le contenu.
Deux solutions s’offrent alors :
- Le mode classique, avec ses petites mimines et en mode click-click
- Le mode barbare, avec un petit script qui prépare tout pour vous en une seule fois (il peut même l’exécuter, si vous êtes gentil avec lui)
Je vais bien sur donner ici la seconde méthode, car la première est à la portée de tous.
Le script provient en parti d’un post trouvé sur le web et amélioré selon mes besoins :
--- SOURCE http://www.sqlservercentral.com/Forums/Topic1162703-391-1.aspx ---
USE MASTER
declare
@isql varchar(2000),
@dbname varchar(256),
@logfile varchar(256)
declare c1 cursor for
SELECT d.name, mf.name as logfile--, physical_name AS current_file_location, size
FROM sys.master_files mf
inner join sys.databases d
on mf.database_id = d.database_id
--where recovery_model_desc <> 'SIMPLE'
and d.name not in ('master','model','msdb','tempdb')
--and mf.type_desc = 'LOG'
open c1
fetch next from c1 into @dbname, @logfile
While @@fetch_status <> -1
begin
select @isql = 'ALTER DATABASE @dbname SET RECOVERY SIMPLE'
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
--exec(@isql)select @isql='ALTER DATABASE @dbname SET PAGE_VERIFY CHECKSUM'
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
--exec(@isql)select @isql='ALTER DATABASE @dbname MODIFY FILE ( NAME = N''@logfile'', FILEGROWTH = 10240KB )'
select @isql = replace(@isql,'@logfile',@logfile)
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
--exec(@isql)select @isql='use @dbname EXEC sp_changedbowner ''sa'' '
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
--exec(@isql)select @isql='USE @dbname checkpoint'
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
--exec(@isql)select @isql='USE @dbname DBCC SHRINKFILE (@logfile, 1)'
select @isql = replace(@isql,'@logfile',@logfile)
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
--exec(@isql)
fetch next from c1 into @dbname, @logfile
end
close c1
deallocate c1
Le résultat de ce script est un script TSQL avec les commandes pour mettre à jour les différentes parties nécessaires.
Vous pouvez alors simplement exécuter les commandes TSQL qui vous intéressent ou directement dé-commenter les lignes EXEC xxxxx
Romelard Fabrice [MVP]
Commentaires
Enregistrer un commentaire