Bonjour,

j'ai une plateforme Cluster SQL 2008 R2 sur laquelle j'ai une instance ayant + de 15000 bases.

Je souhaite effectuer un checkDB de toutes les bases si possible en moins d'une journée , ça va être dur mais si vous avez des idées je suis preneur.

J'ai mis en place un script (sans cursor), mais il tourne pendant plus d'une journée.

Version du SQL : 10.50.4266.0 SP2 Edition Enterprise 64-bit

Pouvez-vous m'aider svp ?

ci-dessous le script que j'utilise :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
SET NOCOUNT ON
GO
 
DECLARE @db TABLE
(
    database_name sysname
)
 
DECLARE @database_name sysname
    , @sql nvarchar(128)
 
INSERT    INTO @db (database_name)
SELECT    name
FROM    sys.DATABASES
WHERE    name NOT IN ('master','msdb','model','tempdb', 'ReportServer', 'ReportServerTempDB', 'distribution')
AND    source_database_id IS NULL -- la BD n'est pas un snapshot
AND    state_desc = 'ONLINE'
 
WHILE EXISTS
(
    SELECT    *
    FROM    @db
)
BEGIN
    SELECT    TOP (1) @database_name = database_name
    FROM    @db
 
    SET    @sql = N'DBCC CHECKDB (' + @database_name + ')'
    PRINT    '------------------------' + @database_name + '------------------------'
    EXEC    (@sql)
 
    DELETE    FROM @db
    WHERE    database_name = @database_name
END