Sql Server System Veritabanlarını Rebuid Etmek

Bu makalede System veritabanlarının nasıl rebuild edildiğini görmüş olacağız. System veritabanlarını rebuild etmek rebuild ettiğimiz instance üzerinde her şeyin sıfırlanmasına sebebiyet verecektir. Çünkü  master veritabanı altında bulunan loginler,system konfigürasyonları,linked serverlar,endpoint yapılarında sıfırlanmaya sebebiyet verecek,msdb altında bulunan alert,job gibi yapılarında kaybolmasına sebebiyet verecektir. System rebuild işlemi yapmadan önce system database yedeklerinin bulunması olmazsa olmazımızdır. Ya da alert ve job create script’leri veya login bazında sh_help_revlogin() komutu ile instance altında bulunan tüm loginlerin create scriptinin alınması gerekmektedir. Yukarıdaki işlemleri yapmayıp System dosyalarımızın backup’ını almak yeterli olacaktır. System databaselerini rebuild ettikten sonra  rebuild öncesi sql server instance’a hangi CU’ların yüklendiği veya sql server instance üzerinde hangi collation yapısının olduğunun öğrenilmesi gerekmektedir. System veritabanlarını restore ederken bizim için önemli olan iki system dosyamız master ve msdb veritabanımızdır. Model veritabanımızın şablon veritabanı olması ayrıca tempdb veritabanınında geçici işlemler yapılması ve system her açılışında sıfırlanması bizim için önemli olmayan system databaseleridir. Not: tempdb veritabanının backup’ı alınmaz. System […]

Sql Server System Veritabanlarını Rebuid Etmek

Bu makalede System veritabanlarının nasıl rebuild edildiğini görmüş olacağız. System veritabanlarını rebuild etmek rebuild ettiğimiz instance üzerinde her şeyin sıfırlanmasına sebebiyet verecektir. Çünkü  master veritabanı altında bulunan loginler,system konfigürasyonları,linked serverlar,endpoint yapılarında sıfırlanmaya sebebiyet verecek,msdb altında bulunan alert,job gibi yapılarında kaybolmasına sebebiyet verecektir. System rebuild işlemi yapmadan önce system database yedeklerinin bulunması olmazsa olmazımızdır. Ya da alert ve job create script’leri veya login bazında sh_help_revlogin() komutu ile instance altında bulunan tüm loginlerin create scriptinin alınması gerekmektedir. Yukarıdaki işlemleri yapmayıp System dosyalarımızın backup’ını almak yeterli olacaktır.

System databaselerini rebuild ettikten sonra  rebuild öncesi sql server instance’a hangi CU’ların yüklendiği veya sql server instance üzerinde hangi collation yapısının olduğunun öğrenilmesi gerekmektedir.

System veritabanlarını restore ederken bizim için önemli olan iki system dosyamız master ve msdb veritabanımızdır. Model veritabanımızın şablon veritabanı olması ayrıca tempdb veritabanınında geçici işlemler yapılması ve system her açılışında sıfırlanması bizim için önemli olmayan system databaseleridir.

Not: tempdb veritabanının backup’ı alınmaz.

System rebuild işlemine geçeden önce system databaselerinin hangi pathlerde olduğunu öğrenmemiz gerekmektedir. Aşağıdaki komut ile system databaselerinin konumunu öğrenebiliriz. Örneğin tempdb farklı bir disk altında oluşturulduğu için yolunun öğrenilmesi gerekir. Diğer system dosyalarının C disk’i altında oluşturulması tavsiye edilen yöntemdir.

SELECT name, physical_name AS current_file_location  

FROM sys.master_files  

WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));

 

Ayrıca system konfigürasyonlarının öğrenilmesi gerekmektedir. Bu yapı master veritabanı backup alınmazsa işimize yarayacak bir yapı olarak karşımıza çıkar.

Collation ve version bilgimizi aşağıdaki komut ile öğrenebiliriz.

SELECT  

SERVERPROPERTY('ProductVersion ') AS ProductVersion,  

SERVERPROPERTY('ResourceVersion') AS ResourceVersion,  

SERVERPROPERTY('Collation') AS Collation;

 

Rebuild işlemine geçelim. Cmd komut satırı yönetici olarak çalıştırıldıktan sonra Sql Server kurulum dosyasına gidilir. Instance bazlı collation değiştirme işleminin aynısı yapılmaktadır.

Gelen Cmd ekranında sqlkurulum dosyasına gidilir.

Çünkü sql server setup ilgili klasör altında bulunmaktadır.

Aşağıdaki komut setup dosyamızda bulunan ilgili instance’ı rebuild işlemi yapmış olacağız. Yukarıdaki serverproperty kısmında almış olduğumuz collation türünün doğru girilmesi gerekmektedir. Bu işlem instance collation değiştirme işlemiyle aynı olarak karşımıza çıkmaktadır.

setup.exe /q /ACTION=RebuildDatabase /INSTANCENAME= TEST2 /SQLSYSADMINACCOUNTS=administrator /SAPWD=Yunus1994 /SqlCollation=Turkish_CI_AS

Komudu çalıştırdıktan sonra system sql server sql servisi durdurup rebuild işlemine başlamaktadır.

Rebuild işlemi bittiğinde instance bazında kontrol ettiğimizde collation yapımızın ve sql version’un rebuild öncesi ile aynı olduğunu görmüş oluyoruz.

Aşağıdaki resimde system database dosyalarının path bilgilerini kontrol ettiğimizde tempdb yapımızın disk yolunu değiştiriyoruz. Çünkü kurulum öncesi tempdb yolumuz farklı bir klasör altındaydı.

Tempdb yolunu öğrenmek için başka bir komut:

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

 

Tempdb path değişimi için tempdb disk yolunu değiştirme makalesini okumanız gerekmektedir. Tempdb disk değişim işlemini yaptıktan sonra sql servisi restart ediyorum. Sebebi tempdb file’lara yeni belirlemiş olduğum path’de oluşsun.

Tempdb veritabanımızı rebuild öncesi instance da hangi diskin altında ise ilgili diske taşıdık.

Şimdi diğer system databaselerini restore etme işleminde model ve msdb veritabanları SSMS arayüzünden yapılabilirken Master veritabanı restore işlemi ise Startup parametlerinden –m parametresiyle yapılmaktadır. Master veritabanı sql server’ın kendisi olduğu için sql system’e maintenance modunda girilmesi gerekmektedir.

Not: Master veritabanı restore etme işlemi: sql server servisimiz açılmıyorsa, master veritabanını rebuild etmek istersek veya master veritabanımız corruption olmuşsa yapılan bir işlem olarak karşımıza çıkmaktadır.

Sql Server Configuration Manager ekranından ilgili instance’a sağ tıklayıp properties ekranında Startup Parameters kısmına girilip sql server bakım modu olan –m startup parametresi yazılır. Add denilip eklenir.

Yapılan işlemi Apply deyip uyguladıktan sonra sql server servisi stop edilir. Daha sonra sql server komut satırı Run as different user ile  yönetici olarak çalıştırılır.

Gelen ekranda  yetkili bir kullanıcı tarafından girilir.

Cmd komut satırına bağlanıldıktan sonra ilgili komut ile cmd komut satırında çalıştırılır. Stop olan sql server yapımızı bakım modunda başlatıyoruz.

NET START MSSQL$TEST2

 

Servis’i başlattıktan sonra default instance için işlem yapacaksanız sadece sqlcmd yazıp enter’a basmalısınız. Eğer named instance’a bağlanacaksanız aşağıdaki gibi sqlcmd -S sunucuadı\instanceadı ya da sqlcmd -S .\instanceadı yazmalısınız.

Servisi çalıştırdıktan sonra master.bak backup’ımızı restore işlemine tabi tutuyoruz.

RESTORE DATABASE master FROM DISK = 'C:\BACKUP\master.bak' WITH REPLACE;

Restore işlemi bittiğinde SQL Server bağlantıyı otomatik olarak koparıp servisi durdurdu.

Tekrardan Sql Configuration Manager’a gidip daha önce eklediğimiz -m parametresini kaldırmamız gerekir.

Yukarıdaki kaldırma işlemi yapıp Apply denildikten sonra sql server servis’i Start edilir.

SSMS arayüzünde S2\TEST2 instance’ına girdikten sonra database,login,linked server yapımız ve sp_configure ayarlarının geldiğini görmüş oluyorum.

Master veritabanımı restore yaptıktan sonra  şimdi sırası ile model ve msdb veritabanımızı restore işlemine alıyoruz. Model veritabanımız şablon veritabanıdır. Restore edilmesede olur. İlgili veritabanların data file’ları önceden kopyalanmışsa başka bir ortamdan kopyalanıp değiştirilebilir.

Model veritabanı restore komutu.

RESTORE DATABASE model FROM DISK = 'C:\BACKUP\model.bak' WITH REPLACE;

Msdb veritabanı restore komutu.

RESTORE DATABASE msdb FROM DISK = 'C:\BACKUP\msdb.bak' WITH REPLACE;

Hata mesajı almamızın sebebi Sql Agent Servisinin çalışmasından dolayıdır. Sql Agent servisi kapatılıp tekrardan yukarıdaki msdb backup komutu çalıştırılabilir.

Başarılı bir şekilde msdb veritabanını restore etmiş olduk. Şimdi sql agent servisimizi açıp önceden tanımladığımız job’ın gelip gelmediğini görelim.

Rebuild işlemi yapmadan önce rastgele oluşturmuş olduğum Job’ında geldiğini görmüş oluyorum.

Bu makalede Sql Server Rebuild işlemini kapsamlı bir şekilde görmüş olduk. Başka bir makalede görüşmek dileğiyle.

Benzer Yazılar

SQL SERVER RIGHT-LEFT PARTITION

SQL Server 5 gün önce

SQL Server’da partitioning, büyük veritabanı tablolarını daha yönetilebilir ve performanslı hale getirmek amacıyla kullanılan bir tekniktir. Bu teknik, tablonun verilerini fiziksel olarak değil, mantıksal olarak parçalara ayırır. Veriler, belirli bir partition function ve partition scheme kullanılarak farklı bölümlere yönlendirilir. Partitioning, özellikle büyük veri kümeleriyle çalışan veri tabanlarında sorgu performansını artırır ve veri yönetimini kolaylaştırır. Partition Function ve Partition Scheme nedir? Partition Function: Verilerin hangi kriterlere göre bölüneceğini belirler. Örneğin, bir tarih aralığına göre verileri ayırmak. Partition Scheme: Verilerin hangi filegroup’larda depolanacağını belirler.   Örnek olarak Range LEFT ve Range RIGHT olmak üzere iki ayrı tabloda partition nasıl yapılır sizlere göstereceğim. İlk olarak Range LEFT olan partition yapısından başlayacağım. Öncelikle Veri tabanıma yeni filegroup ve file ekliyorum Şimdi sıra FUNCTION ve SCHEME oluşturmakta ben tablomu yıllık olarak partition yaptım sizler ihtiyaçlarınız doğrultusunda aylık,günlük vs yapabilirsiniz. LEFT partition dediğimiz olay vermiş olduğunuz tarih aralığına eşit bir veri geldiğinde bu veriyi solundaki partition […]

Veritabanı Recovery Pending Durumu ve Düzeltme Seçenekleri

SQL Server 2 hafta önce

İçindekilerVeritabanı Recovery Pending Durumu Nedir?Veritabanı Neden Recover Pending Duruma Düşer?Recovery Pending Durumu Nasıl Çözülür?SonuçKaynaklarVeritabanı Recovery Pending Durumu Nedir? SQL Server’da veritabanları bazı nedenlere bağlı olarak “Recovery Pending” (Kurtarma Bekleme)  moduna geçebilir. Veritabanın düzgün bir şekilde kapatılmaması, eksik veya bozuk log dosyaları, disk depolama sorunları, sistemde yaşanan anormal şekilde çökmeler veya MS SQL Server’daki hatalar bu duruma sebep olabilir. Recovery durumu, aslında veritabanını tekrar kullanılabilir hale getirmek için bir kurtarma işlemi yürüttüğünü ifade eder ve üç aşamadan oluşur; Analysis (Analiz): Transaction log incelemesi yapılması ve işlemlerin tamamlanma (Commit) durumunun kontrol edilmesi, Redo (Yeniden İşleme): Tamamlanmış (Commit) ancak henüz diske yazılamamış olan işlemlerin yeniden işlenmesi, Undo (Geri Alma): Başlamış (Begin) ancak tamamlanmamış (Commit) işlemlerin  geri alınmasıdır.   Veritabanı Neden Recover Pending Duruma Düşer? SQL Server Restart Süreci SQL Server servisi restart edildiğinde üzerinde bulunan tüm veritabanları tutarlılığın sağlanması için otomatik olarak recovery moduna girer ve redo/undo işlemleri sürecince devam eder. Ani Sistem […]

SQL Server DMV ve DMF – 6

SQL Server 2 hafta önce

Bu yazımızda DMV ve DMF Serimizin 6.sına devam edeceğiz. Bir önceki seride Memory’ye ilişkin DMV ve DMF’leri ele almıştık. Bu yazıda Memory konusunda devam edeceğiz. SQL server’da Memory kavramı en önemli kavramlardan biridir. Özellikle tüm transaction işlemlerinin önce Buffer sonra disk üzerinden devam ettiğini düşünürsek buffer’ın oynadığı kritik rolü daha iyi anlayabiliriz. Bu yazıda Memory’nin durumunu ve monitör edilmesine bakacağız. Özellikle Performans sorunlarında memory konusunda sorun yaşandığı durumda nasıl okumak gerektiği önemli rol oynamaktadır. Hangi database’de, hangi tablo’da sorun yaşandığına ilişkin bilgilere bu paylaşım sonrasında görebileceğiz. SQL Server’ın Memory kullanım durumunu incelediğimde; select physical_memory_in_use_kb/1048576.0 AS ‘physical_memory_in_use (GB)’, locked_page_allocations_kb/1048576.0 AS ‘locked_page_allocations (GB)’, virtual_address_space_committed_kb/1048576.0 AS ‘virtual_address_space_committed (GB)’, available_commit_limit_kb/1048576.0 AS ‘available_commit_limit (GB)’, page_fault_count as ‘page_fault_count’ from  sys.dm_os_process_memory; Görsel – 1   Physical_memory_in_use: Kullanımda olan Fiziksel Memory miktarını gösterir. locked_page_allocations: Memory’de lock’lanmış olan Page’lerin miktarını belirtir. virtual_address_space_contained: SQL Server VAS(Virtual Adress Space) için ayrılan miktarı belirtir. available_commit_limit: SQL Server tarafından kullanılabilecek Memory Miktarını gösterir. […]

0 Yorum

Yorum Yaz

Rastgele