MSSQL Server Tempdb Veritabanının Disk Yolunu Değiştirmek

MSSQL Server

Bu makalede sql server system veritabanlarından olan Tempdb veritabanının disk yolunu değiştirmiş olacağız. Tempdb veritabanı sql server servisimiz restart olduğunda tekrar sql server kurulum konfigürasyonumuzda belirlediğimiz disk yolunun altında oluşmaktadır.  Bunun için bir önceki makalemizde C diski altında C1 klasörünün altına oluşturmuş olduğumuz tempdb data filelarını yine C diski altında C2 klasörüne taşımış olacağız. Şunu da belirtmek gerekir ki tempdb system dosyaları ayrı bir disk altında başka bir system dosyalarının olmadığı bir disk ortamında tek başına konumlanması gerekmektedir. Data ve log dosyasının birlikte bulunmasında herhangi bir sakınca yoktur.

Tempdb disk yolunu bulamazsa sql server başlangıçta servis açılırken çalışmaz. Bu gibi durumlarda startup parametreleri ile yeni disk yolları aşağıdaki yapacağımız gibi set edilmektedir.

Tempdb veritabanımızın nerede konumlandığı aşağıdaki resimde görülmektedir.

Aşağıdaki komut yardımıyla tempdb veritabanımızın konumu ve kaç tane data file’dan oluştuğunu görebiliriz.

Aşağıdaki script ile tempdb dosyalarının boyutu, bulunduğu path bilgisi ve growth değerini görebiliriz.

USE tempdb;
GO
SELECT
name AS [FileName],
size * 8 / 1024 AS [CurrentSizeMB], -- Şu anki boyut
growth * 8 / 1024 AS [GrowthIncrementMB], -- Artış miktarı
max_size * 8 / 1024 AS [MaxSize_MB], -- Maksimum boyut
physical_name AS [FilePath]
FROM sys.database_files;

İkinci bir komut:

select*from sys.sysaltfiles where dbid=DB_ID('TEMPDB')

Aşağıdaki script yardımıyla sql server servis’i bir daha açıldığında tempdb file’larını şu disklerde oluştur anlamına gelen script’i çalıştırabilirsiniz.   Name kısmı yukarıdaki sorgu sonucunuz gibi yazmalısınız.

use master
go
alter database tempdb modify file (name = tempdev, filename = 'C:\C2\Tempdb\tempdb.mdf')
go
alter database tempdb modify file (name = temp2, filename = 'C:\C2\Tempdb\tempdb_mssql_2.ndf')
go
alter database tempdb modify file (name = temp3, filename = 'C:\C2\Tempdb\tempdb_mssql_3.ndf')
go
alter database tempdb modify file (name = temp4, filename = 'C:\C2\Tempdb\tempdb_mssql_4.ndf')
go
alter database tempdb modify file (name = temp5, filename = 'C:\C2\Tempdb\tempdb_mssql_5.ndf')
go
alter database tempdb modify file (name = temp6, filename = 'C:\C2\Tempdb\tempdb_mssql_6.ndf')
go
alter database tempdb modify file (name = temp7, filename = 'C:\C2\Tempdb\tempdb_mssql_7.ndf')
go
alter database tempdb modify file (name = templog, filename = 'C:\C2\Tempdb\templog.ldf')
Go

Size değerinide eklemek istersek kodumuzun aşağıdaki şekilde düzenlenmesi gerekmektedir.

ALTER DATABASE tempdb MODIFY FILE( NAME = temp2, FILENAME = 'T:\TEMPDB\tempdb_mssql_2.ndf',SIZE = 1024,FILEGROWTH = 512);

Not: SIZE ve FILEGROWTH hangi boyut türünden yazmak istersek ilgili boyut yanına büyük harflerle yazılmaktadır. Ör: SIZE=1024MB veya 50GB şeklinde olmaktadır. Aynı işlem FILEGROWTH bölümü içinde olmaktaıdr.

Not: Tempdb yolunu değiştirdikten sonra eski tempd dizini altında eski data file’lar kalıyor. İlgili eski klasörlerin silinmesi gerekmektedir.

Sorgumuzu başarılı bir şekilde çalıştırmış olduk.

Sql server servisi Restart edilene kadar tempdb veritabanımız eski belirlenmiş olan yol üzerinde konumlanmış olur. Şimdi Sql Server servisimizi Restart yapıyoruz. Servis’i Restart etmeden önce klasörümüzün boş olduğunu görmüş oluyoruz.

Restart sonucunda tempdb file’larımızın yeni dosya yolunda oluştuğunu görmüş oluyoruz.

Farklı bir komut sayesinde yeni tempdb yollarını öğrenmiş oluyoruz.

USE TempDB
GO
EXEC sp_helpfile
GO

Not: Tempdb veritabanının shrink edilmesi tavsiye edilmez. Shrink işlemi gerçekleştiğinde başlangıçta set edilen initial size değerinin de değişmesini, değişen bu yapınında temdb dosylarının orantısız büyümesini sağlayacaktır.

Bu makalede Tempdb veritabanımızda data file’ların değişim işlemini ele almış olduk. Başka bir makalede görüşmek dileğiyle.

*Göklerde ve yerde ne varsa hepsi Allah’ındır. Allah’ın ilmi ve kudreti her şeyi kuşatmıştır. Nisa-126*

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir