TempDBデータまたはログファイルを現在の場所から別のドライブまたはフォルダーに移動するにはどうすればよいですか?
TempDBファイルの移動は2段階のプロセスです。
SQL Server
サービス新しいTempDBファイルを作成する場所をSQLに指示するには、次を使用できます。
DECLARE @newDriveAndFolder VARCHAR(8000);
SET @newDriveAndFolder = 'Z:\YourTempDBfolder';
SELECT [name] AS [Logical Name]
,physical_name AS [Current Location]
,state_desc AS [Status]
,size / 128 AS [Size(MB)] --Number of 8KB pages / 128 = MB
,'ALTER DATABASE tempdb MODIFY FILE (NAME = ' + QUOTENAME(f.[name])
+ CHAR(9) /* Tab */
+ ',FILENAME = ''' + @newDriveAndFolder + CHAR(92) /* Backslash */ + f.[name]
+ CASE WHEN f.[type] = 1 /* Log */ THEN '.ldf' ELSE '.mdf' END + ''''
+ ');'
AS [Create new TempDB files]
FROM sys.master_files f
WHERE f.database_id = DB_ID(N'tempdb')
ORDER BY f.[type];
これにより、ファイルを新しいdrive:\folder
に移動するために実行する必要があるT-SQLステートメントが生成されます。 (画像をクリックすると大きくなります)
移動ステートメントを実行したら、上記のクエリを再度実行して、Current Location
列に新しいdrive:\folder
が表示されていることを確認できます。
変更に満足したら、SQL Serverサービスを再起動します。
上記のスクリプトのサイズ(MB)の計算はオフです。 sys.master_filesのサイズは8KBページの数であることを忘れないでください。正しいスクリプトは次のとおりです。
DECLARE @newDriveAndFolder VARCHAR(8000);
SET @newDriveAndFolder = 'Z:\YourTempDBfolder';
SELECT [name] AS [Logical Name]
,physical_name AS [Current Location]
,state_desc AS [Status]
,size*8/1024 AS [Size(MB)] --Number of 8KB pages dived by 1024
,'ALTER DATABASE tempdb MODIFY FILE (NAME = ' + QUOTENAME(f.[name])
+ CHAR(9) /* Tab */
+ ',FILENAME = ''' + @newDriveAndFolder + CHAR(92) /* Backslash */ + f.[name]
+ CASE WHEN f.[type] = 1 /* Log */ THEN '.ldf' ELSE '.mdf' END + ''''
+ ');'
AS [Create new TempDB files]
FROM sys.master_files f
WHERE f.database_id = DB_ID(N'tempdb')
ORDER BY f.[type];