SQL Server : déplacer les fichiers du tempdb

Sous SQL Server, la base système tempdb sert à disposer d’un espace de stockage pour y créer des tables temporaires et aussi faire des opérations de tris, de regroupement dans l’exécution des requêtes. Installer cette base dans le dossier par défaut est donc une très mauvaise idée.

La création du répertoire

Sous l’interpréteur de commandes Windows (cmd.exe), créez tout d’abord votre répertoire d’accueil des fichiers associés au tempdb :

md e:\tempdb

Pensez à ce que les utilisateurs NT Service\MSSQLSERVER et NT Service\SQLSERVERAGENT aient des droits en écriture sur ce répertoire fraîchement créé.

La création de la procédure stockée move_tempdb

Je l’ai créée dans la base msdb :

CREATE PROCEDURE move_tempdb(@dest VARCHAR(MAX))
AS
BEGIN
	-- Déclaration du curseur des fichiers associés à la base système tempdb
	DECLARE cursor_Files CURSOR FOR
		SELECT name,physical_name FROM tempdb.sys.database_files;
	-- Déclaration des variables utilisées par la procédure stockée
	DECLARE @name VARCHAR(MAX);
	DECLARE @path VARCHAR(MAX);
	-- DECLARE @dest VARCHAR(MAX) = 'e:\tempdb';
	DECLARE @file VARCHAR(MAX);
	DECLARE @pos INT;
	DECLARE @newpath VARCHAR(MAX);
	DECLARE @sql VARCHAR(MAX);
	OPEN cursor_Files;
	FETCH NEXT FROM cursor_Files INTO @name,@path;
	WHILE @@FETCH_STATUS <> -1
	BEGIN
		-- Extraction du nom de fichier du chemin
		SET @pos=CHARINDEX('\',REVERSE(@path));
		PRINT @pos;
		SET @file=RIGHT(@path,@pos)
		PRINT @file;
		SET @newpath=@dest+@file;
		-- Exécution de l'instruction SQL pour déplacer les fichiers
		SET @sql='ALTER DATABASE tempdb MODIFY FILE (NAME =''' + @name+ ''', FILENAME=''' + @newpath + ''')';
		PRINT @sql;
		EXECUTE (@sql);
		FETCH NEXT FROM cursor_Files INTO @name,@path;
	END;
	CLOSE cursor_Files;
	DEALLOCATE cursor_Files;
END;
GO 

Exécution de la procédure stockée

Vous pouvez exécuter votre procédure stockée sans ou avec l’instruction EXEC :

EXEC msdb.dbo.move_tempdb
	@dest='e:\tempdb';
EXEC msdb.dbo.move_tempdb 'e:\tempdb';
msdb.dbo.move_tempdb 'e:\tempdb';
msdb.dbo.move_tempdb
	@dest='e:\tempdb';

La prise en compte du déplacement des fichiers du tempdb se produit à l’occasion du redémarrage de l’instance SQL Server.

Variante : le bloc Transact-SQL

Vous pouvez faire le choix d’exécuter un bloc Transact-SQL en ayant comme constante  le répertoire de destination dans le code. De cette façon, vous pouvez l’exécuter dans un job.

-- Déclaration du curseur des fichiers associés à la base système tempdb
DECLARE cursor_Files CURSOR FOR
	SELECT name,physical_name FROM tempdb.sys.database_files;
-- Déclaration des variables utilisées par la procédure stockée
DECLARE @name VARCHAR(MAX);
DECLARE @path VARCHAR(MAX);
DECLARE @dest VARCHAR(MAX) = 'e:\tempdb';
DECLARE @file VARCHAR(MAX);
DECLARE @pos INT;
DECLARE @newpath VARCHAR(MAX);
DECLARE @sql VARCHAR(MAX);
OPEN cursor_Files;
FETCH NEXT FROM cursor_Files INTO @name,@path;
WHILE @@FETCH_STATUS <> -1
BEGIN
	-- Extraction du nom de fichier du chemin
	SET @pos=CHARINDEX('\',REVERSE(@path));
	PRINT @pos;
	SET @file=RIGHT(@path,@pos)
	PRINT @file;
	SET @newpath=@dest+@file;
	-- Exécution de l'instruction SQL pour déplacer les fichiers
	SET @sql='ALTER DATABASE tempdb MODIFY FILE (NAME =''' + @name+ ''', FILENAME=''' + @newpath + ''')';
	PRINT @sql;
	EXECUTE (@sql);
	FETCH NEXT FROM cursor_Files INTO @name,@path;
END;
CLOSE cursor_Files;
DEALLOCATE cursor_Files;
GO

MSSQL /

deneme bonusu veren siteler casino siteleri betdenemebonusu.com bahis siteleri Ev eşyası depolama Depolama Şehirlerarası evden eve nakliyat Evden eve nakliyat Eşya depolama yurtdışına ev taşıma Türkiye'den Almanya'ya ev taşıma zati eşya tasimaciligi uluslararasi zati eşya tasimaciligi eşya depolama şehirler arası nakliyat asansörlü nakliyat greatplay.net güvenilir online bahis siteler 2022 jetbahis Rexbet hovarda mobilbahis güncel adres sartsız Deneme Bonus sekabet maltcasino güncel adres> pinbahis100.com betduman.com olabahis.top سایت شرط بندی shartkade.com 1xbet-mobil.com beykoz evden eve nakliyat ataşehir evden eve nakliyat şişli evden eve nakliyat istanbul evden eve nakliyat
teens porn videos free sex xxx sexy videos