bloginfo

Procédure stockée de déplacement des fichiers de la base système tempdb de SQL Server

Jun 9th, 2021
785
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Procédure stockée permettant de déplacer les fichiers de la base système tempdb de SQL Server vers un nouveau répertoire (@dest)
  2. -- Source : https://www.dsfc.net/bdd/mssql/sql-server-deplacer-fichiers-tempdb/
  3. CREATE PROCEDURE move_tempdb(@dest VARCHAR(MAX))
  4. AS
  5. BEGIN
  6.     -- Déclaration du curseur des fichiers associés à la base système tempdb
  7.     DECLARE cursor_Files CURSOR FOR
  8.         SELECT name,physical_name FROM tempdb.sys.database_files;
  9.     -- Déclaration des variables utilisées par la procédure stockée
  10.     DECLARE @name VARCHAR(MAX);
  11.     DECLARE @path VARCHAR(MAX);
  12.     -- DECLARE @dest VARCHAR(MAX) = 'e:\tempdb';
  13.     DECLARE @file VARCHAR(MAX);
  14.     DECLARE @pos INT;
  15.     DECLARE @newpath VARCHAR(MAX);
  16.     DECLARE @sql VARCHAR(MAX);
  17.     OPEN cursor_Files;
  18.     FETCH NEXT FROM cursor_Files INTO @name,@path;
  19.     WHILE @@FETCH_STATUS <> -1
  20.     BEGIN
  21.         -- Extraction du nom de fichier du chemin
  22.         SET @pos=CHARINDEX('\',REVERSE(@path));
  23.         PRINT @pos;
  24.         SET @file=RIGHT(@path,@pos)
  25.         PRINT @file;
  26.         SET @newpath=@dest+@file;
  27.         -- Exécution de l'instruction SQL pour déplacer les fichiers
  28.         SET @sql='ALTER DATABASE tempdb MODIFY FILE (NAME =''' + @name+ ''', FILENAME=''' + @newpath + ''')';
  29.         PRINT @sql;
  30.         EXECUTE (@sql);
  31.         FETCH NEXT FROM cursor_Files INTO @name,@path;
  32.     END;
  33.     CLOSE cursor_Files;
  34.     DEALLOCATE cursor_Files;
  35. END;
  36. GO
RAW Paste Data