[2K5] Execution de commande dans un curseur
Bonjour,
J'ai crée le curseur ci-joint afin de changer les tailles par defaut de toutes les bases de données de mes serveurs.
Le soucis est que je ne sais pas comment executer la commande dans le curseur, j'ai essayé de créer une table temporaire pour mettre les instructions dans la table et les faire executer, mais je n'y arrive pas.
Pourriez vous m'aider ?
Code:
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 36 37 38
| SET ANSI_NULLS ON
SET NOCOUNT ON
SET QUOTED_IDENTIFIER ON
DECLARE @name1 varchar(256)
DECLARE @SQL1 varchar (1000)
DROP TABLE #fraglist
CREATE TABLE #fraglist
(
ObjectName CHAR (255))
DECLARE MyCursor CURSOR
FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE version <> '0'
OPEN MyCursor
FETCH MyCursor INTO @name1
WHILE @@fetch_Status=0
BEGIN
SET @SQL1 = '
USE [' + @name1 + ']
select ''ALTER DATABASE [' + @name1 + '] MODIFY FILE ( NAME = ' + @name1 + ' , FILEGROWTH = 0MB , SIZE = '' +
cast(convert(nvarchar(15), floor(size*1.2 * 8)) + N'' KB'' as nvarchar(15)) + '',MAXSIZE = '' +
cast(convert(nvarchar(15), floor(size*1.2 * 8)) + N'' KB'' + '')'' as nvarchar(15)) from sysfiles where fileid=''1''
select ''ALTER DATABASE [' + @name1 + '] MODIFY FILE ( NAME = ' + @name1 + ''+ '_log'+ ' , FILEGROWTH = 0MB , SIZE = '' +
cast(convert(nvarchar(15), floor(size*1.2 * 8)) + N'' KB'' as nvarchar(15)) + '',MAXSIZE = '' +
cast(convert(nvarchar(15), floor(size*1.2 * 8)) + N'' KB'' + '')'' as nvarchar(15)) from sysfiles where fileid=''2''
'
INSERT INTO #fraglist
EXEC (@SQL1)
FETCH MyCursor INTO @name1
END
CLOSE myCursor
DEALLOCATE myCursor;
select * from #fraglist |