2010-10-26

Logical/Physical CPU Sayısını Bulma

SQL Server 2008 ve SQL Server 2008 R2 sürümlerinde logical/physical cpu sayısını aşağıdaki sql kodu ile alabilirsiniz:

SELECT cpu_count AS [Logical CPU Count],
hyperthread_ratio AS [Hyperthread Ratio],
cpu_count/hyperthread_ratio AS [Physical CPU Count]
FROM sys.dm_os_sys_info;

2010-10-25

SQL Server Servis Account Adını Bulma

SQL Server'ı çalıştıran servis account'ını aşağıdaki gibi alıp öğrenebilirsiniz:

DECLARE @ServiceaccountName varchar(128)
EXECUTE master.dbo.xp_instance_regread
N'HKEY_LOCAL_MACHINE',
N'SYSTEM\CurrentControlSet\Services\MSSQLSERVER',
N'ObjectName',
@ServiceAccountName OUTPUT,
N'no_output'
SELECT @ServiceaccountName

SQL Server 2008 R2 SP1'den sonra gelen sys.dm_server_services DMV ile servisler ile ilgili bir çok bilgiye ulaşabilirsiniz. Benzer şekilde aşağıdaki T-SQL ile de servis account bilgisini alabilirsiniz:

select servicename, service_account
from sys.dm_server_services


2010-10-15

SQL Server'ın Başlatıldığı Zamanı Bulma

SQL Server'ın başlangıç zamanını SQL Server 2008 ile birlikte gelen sys.dm_os_sys_info DMV'i ile aşağıdaki gibi bulabilirsiniz:

SELECT sqlserver_start_time
FROM sys.dm_os_sys_info

SQL Server Error Log Dosyası Nerede?

SQL Server error log dosyasının adını ve dosyanın bulunduğu dizini aşağıdaki undocumented sql kodu ile alabilirsiniz:
SELECT SERVERPROPERTY('ErrorLogFileName')

2010-09-30

MS SQL Server 2008 Service Pack 2 (SP2) Çıktı

Microsoft daha önce 2010 yılının 4.çeyreğinde çıkaracağını duyurduğu SQL Server 2008 SP2'yi yayınladı.
SQL Server 2008 Service Pack 2'yi http://www.microsoft.com/downloads/en/details.aspx?FamilyID=8fbfc1de-d25e-4790-88b5-7dda1f1d4e17&displaylang=en adresinden indirebilirsiniz.

SQL Server 2008 Service Pack 2'de giderilen hataların listesini http://support.microsoft.com/kb/2285068 adresinden detaylı olarak inceleyebilirsiniz.

2010-09-16

Partition Tabloların Filegroup ve Diğer Bilgilerini Alma

Partition yapısındaki bir tablonun partition aralıklarını ve bu aralıkların hangi filegroup'ta tutulduğunu aşağıdaki sorgu ile alabilirsiniz:

select isnull(d.name,ps.name) FileGroupNameOrSchemeName
,isnull(d.type_desc , ps.type_desc ) FileGroupTypeOrSchemeType
,OBJECT_NAME(p.object_id) ObjectName
,p.rows
,p.data_compression_desc
,p.partition_id
,p.partition_number
,isnull(case when boundary_value_on_right =1 then '<' else '>' end + cast(minprv.value as varchar(100)),'~') + ' to '
+isnull( case when boundary_value_on_right =1 then '>='
else '<=' end + cast(prv.value as varchar(100)), '~') Criteria
,d2.name FilegroupName
from sys.partitions p join sys.indexes i on i.index_id = p.index_id and i.object_id = p.object_id
left join sys.data_spaces d on d.data_space_id = i.data_space_id
left join sys.partition_schemes ps on ps.data_space_id = i.data_space_id
left join sys.partition_functions pf on pf.function_id = ps.function_id
left join sys.partition_range_values prv on prv.function_id = ps.function_id and prv.boundary_id = p.partition_number
left join sys.partition_range_values minprv on minprv.function_id = ps.function_id and minprv.boundary_id = p.partition_number -1
left join sys.destination_data_spaces dds on dds.partition_scheme_id = ps.data_space_id and dds.destination_id = p.partition_number
left join sys.data_spaces d2 on d2.data_space_id = dds.data_space_id
where p.object_id=object_id('TabloAdi')

2010-09-12

Performans Counter'a Binlik Ayıracı Ekleme

Windows Vista'dan önceki işletim sistemlerinde perfmon'da binlik ayıracı default olarak yoktur ve bu eksiklik özellikle uzun sayıları okumamızda zorluk çıkartır. Perfmon'a binlik ayıracını aşağıdaki adımları uygulayarak ekleyebilirsiniz:
  1. Regedit'i çalıştırın.
  2. HKEY_CURRENT_USER\Software\Microsoft\SystemMonitor\ sekmesini açın.
  3. Edit menu'de New deyip DWORD değeri seçin.
  4. Oluşturduğunuz yeni alana "DisplayThousandsSeparator" adını verin.
  5. "DisplayThousandsSeparator" değerini 1 olarak set edin.
  6. Perfmon'u yeniden başlatın.

2010-08-24

Gmail'im Dışardan Mail Almaz Oldu, Tüm Maillerim Yolda Kaldı!

Sevgili dostlar,

Gmail'deki mail hesaplarına dünden beri mailler gelmiyor. Gmail'den başka bir adresteki mail hesaplarına mail gönderebiliyorsunuz fakat mail alamıyorsunuz. Bir süredir gmail'deki hesaba mail gönderdim hala gitmedi yada benim gibi gmail de mail beklediği halde maili gelmeyen arkadaşlara duyurulur.

2010-08-18

Veritabanı Yöneticileri Neler Yapar?

Bir DBA tipik olarak aşağıdaki konulardaki işlerle uğraşır:

- Veri Arşivleme
Verilerin boyutu zamanla artar. Bu artış disk üzerinde daha çok yer kaplamasına neden olup, performansı düşürüp yönetimi zorlaştırır. Bir DBA verinin boyutunu ve büyümesini izleyip gerekli yerlerde arşivleme yapmalıdır. Arşivleme işlemi için kullanılan yöntem aynı server üzerindeki farklı bir filegroup yada veritabanı olabileceği gibi farklı bir sunucu üzerindeki bir veritabanı da olabilir. Kullanılan yöntem kurum politikasına ve yasalara uygun olmalıdır.

- Toplantılara Katılma
Çoğu DBA toplantılardan nefret eder.Çünkü çalışmaya ve zamanla yarışmaya ihtiyacı vardır ve toplantıları zaman kaybı olarak görür. Toplantılar gerçek hayatın vazgeçilmezleri arasındadır. Bir DBA'nın diğer insanlarla ihtiyaçları konusundaki iletişimi ve çoğu kararı almasının ön adımı için toplantılara yeteri kadar vakit ayırması gerekir.

- Audit Yapma
Bir DBA için hangi kullanıcının nereye eriştiği, hangi kayıtı ekleyip, sildiği ve güncellediği hayati öneme haiz bir meseledir. Audit sadece belirli zaman dilimi, belirli kullanıcılar ve belirli veriler için olabileceği gibi tüm zamanlardaki tüm kullanıcılara ait hareketler de olabilir.

- Uygulama Entegrasyonu
Çoğu kurumda third party uygulamalar izole bir şekilde diğer uygulamalardan ayrı olarak çalışır. Bir DBA bu uygulamaların birbiriyle T-SQL veya SSIS paketleriyle konuşmasını sağlar.

- Backup ve Recovery
Bir DBA'nın en temel işlerinden birisi kurumun verilerini korumaktır. Bunu verilerin periyodik olarak yedeklenmesi şeklinde korur. Bunun için iyi bir geri dönüş planına ihtiyacı vardır. Bu planın yazılıp test edilmesi gerekir ve bir problem anında hızlı bir şekilde verilerin geri döndürülmesi gerekir. Bir DBA'nın en büyük hatalarından birisi aldığı backupları test etmemesidir! Çünkü alınan bir backup'ın restore edilebileceğinin bir garantisi yoktur. Bir DBA sadece backup almak yerine bu backuplarını başarılı bir şekilde restore da etmelidir.

- Business Intelligence/Data Warehousing
Business Intelligence(BI) ve Data Warehousing DBA'lığın en hızlı büyüyen alanlarından birisidir. Bu alan çok karışık olduğu için iyi disiplin altına alınmalı.

- Kapasite Planlama
Çoğu kurumda veritabanlarının sayısı ve büyüklüğü hızlı bir şekilde büyür. DBA veri büyümesini izlemeli ve büyümeye paralel planlar yapıp bu planları hayata geçirmeli. Bunu verileri arşivleyerek yapabildiği gibi mevcut storage'ı artırarak da yapabilir.

- Değişiklik Yönetimi
SQL Server konfigürasyonları, veritabanı şemaları, T-SQL kodlar ve diğer veritabanı bileşenleri zamanla değişir. DBA bu değişiklikleri önceden analiz edip gerekli testleri yaptıktan sonra hayata geçirmeli.

- Veritabanı Uygulaması Geliştirme
Bazı DBA'ler yönetim işlerini kolaylaştırmak için kendilerine özel uygulamalar geliştirirler.

- Veri Modelleme ve Veritabanı Tasarımı
Hızlı ve ölçeklenebilir veritabanlarını oluşturmak iyi veritabanı tasarımından geçer. Büyük kurumlarda işi sadece veritabanı tasarımı olan ve bu alanda uzmanlaşmış DBA'ler bulunur.

- Geliştirme ve Best Practice'leri Uygulama
İyi bir DBA proaktif olmak zorundadır. Proaktifliğin yolu ise best practice'leri uygulamaktan geçer. Bir kurumun best practice'leri yazılı olmalı ve bunlara uyulmalı.

- Yüksek Erişilebilirlik(HA)
Yüksek erişebilirlik clustering, mirroring, log shipping, replication vb gibi tekonolojilerle sağlabilir. Yüksek erişilebilirlik çok özel bilgi ve birikim gerektirir. Bu yüzden sırf bu alana yoğunlaşmış DBA'ler bulmak mümkündür.

- Kurulum, Konfigürasyon, Patch Geçişi ve SQL Server Yükseltme
Çok çok zaman alan DBA işlerinden birisidir. Patch geçme ve SQL Server sürüm yükseltme işlemleri karmaşık, riskli işlemlerdir. Bu işlerin iyi planlanıp iyice test edildikten sonra üretim ortamına alınması gerekir.

-Yük Dengeleme(Load Balancing)
Bir DBA server üzerindeki yükü izleyip gerektiğinde veritabanını çok yoğun bir sunucudan daha az yoğun olan bir sunucuya alabilir. Yük dengeleme için bir başka çözüm ise veritabanlarını konsolide etme veya sanallaştırmadır.

- Yapılan İşleri Dökümante Etme
Bir DBA için en sıkıcı işlerden birisi döküman yazmaktır. Fakat döküman yazmaktan korkmayın. Zira yazdığınız dökümanlar yeni DBA leri çin yol gösterici olabilir yada sizin işinizi kolaylaştırabilir.
- Yöneticileri Yönetme
Bir DBA hem kendi yöneticisi ile hem de diğer yöneticilerle iyi geçinmek zorundadır. Yöneticinize belirli periyotlarda yaptığınız işlerle ilgili düzenli raporlar sunup destek gereken noktalarda yöneticinizin desteğini almalısınız. Yaptığınız işin kritiktiğini ve yönettiğiniz verilerin değerini yöneticinize iyi anlatacak şekilde rehberlik etmelisiniz.

- Test Ortamlarını Yönetme
Büyük ölçekli kurumlarda test ortamını üretim ortamından oluşturmak ve test ortamlarını yönetimini yapmak DBA işidir.

- İzleme(Monitoring)
İzleme geniş kapsamlı bir iş olup performans izleme, log izleme, jobların düzgün çalıştığını izleme, error logları izleme vs izleme işlemlerini kapsar.

- Performans Tuning
Bir DBA performansı izleyip veritabanı performansını artırmanın yolları bulup uygular. Bir DBA'nın en önemli işlerinden birisi olup oldukça kapsamı geniş bir konudur. Sırf bu alanda uzmanlaşan DBA'ler bulunmaktadır.

- Proje Yönetme
Bir DBA iyi proje yönetme yeteneklerine haiz olmalıdır.

- Verilerin Korunmasını Sağlama
DBA ler bir kurum verilerin tutarlı ve doğru olmasını sağlamak için uğraşır.

- Veriyi Replike Etme
Bir DBA özel verileri(bir yada birden çok tablo olabilir) bir sunucudan diğer sunuculara belirli periyotlarla replike ederek taşır ve bu replikasyonu yönetir .

- Rapor Oluşturma
Verileri T-SQL sritpleri ile çekip reporting service üzerinde kullanıcıların kullanabileceği formatlı bir şekildeki raporları oluşturur. Bu alanda da uzmanlaşan DBA ler bulunmaktadır.

- Çalışan Joblar
Bir DBA bir sunucu üzerinde ihtiyacı olan SQL jobları oluşturup bu jobları yönetir. Bu job bir index rebuild, istatistik update, transaction log backup vs maintence plan olabilir.

- Security
Bir DBA SQL Server loginlerinin oluşturulması, bu loginlerin başka sunuculara taşınması ve bunların yönetiminden sorumludur.

- Scripting
Bir DBA kendi işine yarayacak T-SQL kod yazıp bunları geliştirir.

- SSIS/ETL
Bir DBA verilerin bir yerden başka bir yere taşınması için sıklıkla SSIS paketi kullanır.

- Test Yapma
Bir DBA veritabanı testleri, yönetim araçlarının testlerini yapar.

- Kullanıcıların Eğitilmesi
Bir DBA bilgilerini diğer DBA ler, yazılım geliştiriciler ve son kullanıcılarla paylaşır. Bu bilgi aktarımı bire bir aktarım şeklinde olabildiği gibi grup şeklinde eğitim sınıfı ayarlayarak ta sağlanabilir.

- Hata Bulma ve Giderme(Troubleshooting)
Bir DBA neredeyse her gün hata ayıklamayla uğraşır. Zaman zaman tüm işini bırakıp mevcut hata üzerinde odaklandığı zamanlar olur.

- Takım Arkadaşıyla Çalışma
Bir DBA nadiren yalnız başına çalışır. Bir DBA çoğu zaman yazılım geliştiricilerle, storage uzmanlarıyla, network uzmanlarıyla, test ekibiyle, dış kaynaklı firma elemanlarıyla, sistem uzmanlarıyla iletişim halindedir.

Yararlanılan Kaynak: How to Become an Exceptional DBA, Brad M McGehee, 2009

Makalenin görsel eklenmiş haline Çözümpark'tan ulaşabilirsiniz.

2010-08-15

SQL Server Servislerinin Durumunu Kontrol Etme

SQL Server servislerinizin durumunu  xp_servicecontrol stored procedure'ü ile öğrenebilirsiniz. SQL Server'a ait servislerin çalışma durumuna aşağıdaki şekilde öğrenebilirsiniz:

EXEC xp_servicecontrol N'querystate',N'MSSQLServer'
EXEC xp_servicecontrol N'querystate',N'SQLServerAGENT'
EXEC xp_servicecontrol N'querystate',N'msdtc'
EXEC xp_servicecontrol N'querystate',N'sqlbrowser'
EXEC xp_servicecontrol N'querystate',N'MSSQLServerOLAPService'
EXEC xp_servicecontrol N'querystate',N'ReportServer'

2010-08-09

Pegasus Havayollarının Biletleme Sistemi Transactional Çalışmıyor

Pegasus havayollarının internet sayfasından bilet alamadığım halde kredi kartı provizyonuna bilet tutarı kadar harcama yansıyan mağdurlardan birisi de benim. Biletleme sistemlerindeki ana sorun işlem sonucu ile ödemenin aynı TRANSACTION içerisinde yapılmaması(Burdaki ayrıntılı sorun ise reservasyon timeout süresi gibi bir iş kuralının ödeme onayı alındıktan kontrol edilmesi olarak göze çarpıyor. Halbuki ödeme onayı yapılmadan önce bu iş kuralı da kontrol edilip bu süre timeout olmamışsa ödeme adımına geçilmeli aksi takdirde ödeme alınıp biletleme işlemi yapılamıyor). Biletleme ile ödemeyi yapan transactionlar birbirinden bağımsız ve biri diğerini beklemeden oluştuğu için hatalara açık kapı bırakıyor. Pegasus havayolu firmasının biletleme sisteminde yapması gereken tek şey biletme ile ödeme sisteminin aynı transaction bloğu içerisinde gerçekleştirmesi. Böylelikle bir işlem ya başarılı olup COMMIT olur yada başarısız olup ROLLBACK olur. Benim gibi bileti oluşmadığı halde bilet ücreti kendisinden alan mağdurlar da kapınızı çalıp hem kendisini hem de sizi meşgul etmemiş olur. Ayrıca müşteri memnuniyetsizliğini de yaşatmamış olursunuz. Biletleme ve ödeme sisteminizin bir an önce TRANSACTIONAL yapıya geçmesi dileğiyle...

.::YASAL UYARI::.

©2004-2023 Mehmet GÜZEL, www.mehmetguzel.net

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.