답변:
tempdb
파일 을 이동하려면 다음을 수행하면됩니다.
alter database tempdb
modify file
(
name = tempdev,
filename = 'C:\YourNewTempdbDir\tempdb.mdf'
)
go
alter database tempdb
modify file
(
name = templog,
filename = 'C:\YourNewTempdbDir\templog.ldf'
)
go
에 새 파일을 추가 tempdb
하려면 다음을 수행하면됩니다 ( PRIMARY
파일 그룹에 파일 을 추가 하거나 직접 생성 하려는 경우 ).
alter database tempdb
add file
(
name = tempdb2,
filename = 'C:\YourNewTempdbDir\Tempdb2.ndf'
)
go
이러한 변경 사항을 적용하려면 SQL Server 서비스를 다시 시작해야합니다. 지금 까지 다운 타임을 최소화하는가는대로, 당신은 서비스를 다시 시작 될 때까지의 시간으로 제한된다 . tempdb
SQL Server는 항상 파일을 다시 만들고 서비스를 시작할 때 새 위치 / 파일이 만들어 지므로 기존 데이터베이스 파일 이동에 대해 걱정할 필요가 없습니다 .
"코어 당 1 개의 tempdb 데이터 파일"에 대해서는 대부분 신화입니다. 올바른 방법은 tempdb
PFS (Page Free Space), GAM (Global Allocation Map) 및 SGAM (Shared Global Allocation Map) 페이지에 대한 파일 경합 을 모니터링 하는 것입니다. 이 기사를 참조 하여 DMV를 통해 조회하는 파일 (대체 링크)sys.dm_os_waiting_tasks
을 확인하여 tempdb
파일 경합 정도를 확인하십시오 . 그런 다음 tempdb
코어가있는 것과 동일한 양의 파일로 담요 를 채우는 대신이 작업을 수행해야합니다 . 더 바람직한 접근 방식입니다.
tempdb를 이동하려면 다음을 실행하십시오.
ALTER DATABASE tempdb
MODIFY FILE ( name=tempdev, filename='D:\Newpath\tempdb.mdf')
GO
ALTER DATABASE tempdb
MODIFY FILE ( name=templog, filename='D:\Newpath\templog.ldf')
GO
그런 다음 SQL Server 서비스 (MSSQLServer)를 다시 시작하십시오.
tempdb의 파일 수-Paul Randall의 기사 : 매일 SQL Server DBA 신화 참조 : (12/30) tempdb는 항상 프로세서 코어 당 하나의 데이터 파일을 가져야합니다.
에서 마이크로 소프트의 조언 :
일반적으로 논리 프로세서의 수가 8보다 작거나 같은 경우 논리 프로세서와 동일한 수의 데이터 파일을 사용하십시오.
논리 프로세서 수가 8보다 큰 경우 8 개의 데이터 파일을 사용한 다음 경합이 계속되면 경합이 허용 가능한 수준으로 줄어들거나 만들 때까지 데이터 파일 수를 4의 배수 (논리 프로세서 수까지)만큼 늘리십시오. 작업량 / 코드 변경.
TempDB 파일 이동은 2 단계 프로세스입니다.
SQL Server
변경 사항을 적용 하려면 서비스를 다시 시작하십시오 ( 필요한 최소 다운 타임입니다 ).SQL에 새 TempDB 파일을 작성할 위치를 알려면 다음을 사용할 수 있습니다.
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 서비스를 다시 시작하십시오 .