2011-12-31

SQL Server 2012 Upgrade: Unutulmaması Gerekenler!

SQL Ser ver 2005/2008 veritabanlarınızı SQL Server 2012 versiyonuna yükseltirken aşağıdaki adımları unutmamanızı tavsiye ederim:

2011-12-28

SQL Server 2008 Backup Compression ile Yer ve Zamandan Tasarruf Sağlayın

Veritabanlarınızın boyutu zamanla büyüyorsa veritabanı yedeklerinizin boyutu da zamanla büyüyecektir. Büyüyen yedek boyutları sadece büyümekle kalmayıp yedekleme sürelerini  ve network trafiğinizdeki yoğunluğu da artıracaktır.

2011-12-11

SQL Server 2008 SP2 Kurulabilir Kontrolü

SQL Server 2008 SP2 kurulumunda SQL Server 2008 SP2 Kurulum Hatası ve Çözümü adlı yazımda da bahsettiğim hata ile karşılaşmamak için Database Default Location ın var olup olmadığının kontrolünün yapılması gerekir.

2011-12-08

Silinen Offline Bir Veritabanın Dosyaları Silinmez

Veritabanı silme ile ilgili olarak bir çok kişinin bildiği  "Bir veritabanı silindiği zaman o veritabanı altındaki tüm .mdf, .ndf ve .ldf dosyaları da otomatik olarak silinir" bilgisi tam olarak öyle değil. Bu konudaki doğrular aşağıdadır:

2011-11-26

SQL Server 2012 Audit Yenilikleri

Bu yazımda SQL Server 2012 ile birlikte Audit tarafındaki yeniliklere değineceğim.

SQL Server 2008 ile birlikte gelen güzel özelliklerden birisi de Audit idi. Audit, veritabanı tarafında güvenlik ile ilgili yönetimsel işleri kolaylaştırdığı gibi özellikle denetimden geçen firmaların denetimlerinin daha rahat geçmesine vesile oldu.

SQL Server 2012 ile birlikte audit tarafında gelen yenilikler:

2011-11-17

SQL Server 2012 Release Candidate (RC)

SQL Server 2012 Release Candidate (RC) 32-bit ve 64-bit versiyonlarını https://www.microsoft.com/betaexperience/pd/SQLDCTP3CTA/enus/ adresinden indirebilirsiniz. Ayrıca SQL Server 2012 Release Candidate versiyon için yayınlanan Books Online'a ise http://msdn.microsoft.com/en-us/library/ms130214(SQL.110).aspx adresinden ulaşabilirsiniz.

SQL Server 2012 RC sürümü beklediğimden erken çıktı.

SQL Server 2012 Release Candidate (RC) ile sağlanan katma değerler:

2011-10-22

2011-10-20

SQL Server Öncüleri Lansmanı

Tarih : 21 Ekim 2011 Cuma
Saat :  09.00 - 16.15
Yer  :  Microsoft İstanbul Ofisi
Jüpiter Toplantı Salonu
Bellevue Residance
Aydın Sok No:7 Levent

Küresel çapta faaliyet gösteren, en büyük SQL Server topluluğu SQL Pass’ın (Professional Association for SQL Server) Türkiye Şubesi olarak çalışmaya başlayan SQL Server Öncüleri, tanıtım toplantısına sizleri de davet ediyor.

2011-10-12

SQL Server Code Named "Denali" SQL Server 2012 Oluyor

  • SQL Server Code Named "Denali" olarak bildiğimiz SQL Server'ın yeni sürümü SQL Server 2012 adını alacak. SQL Server 2012 nin RTM versiyonu 2012 yılının ilk yarısında çıkacak.
  • Ayrıca “Project Crescent” kod adı ile geliştirilen ürün "Power View" adıyla karşımızda olacak. Meraklısına, sevenlerine ve bekleyenlerine duyurulur.
  • SQL Azure'daki veritabanı boyutu limiti 50 GB dan 150 GB çıkartılmış. Daha büyük veritabanların Azure taşınması için Microsoft'ın bu sınırı daha da yükseltmesi gerekiyor.
  • Microsoft, SQL Server'da yapılacak yeni geliştirmelerde Datetime, SmallDateTime veri tiplerini  önermiyor. Bunun yerine  Date, Time, Datetime2  veri tiplerini öneriyor.
  • Yine merak edenler için : SQL Server 2012 de CDC tarafında herhangi bir değişiklik gelmiyor. CDC tarafındaki performans yükünü iyileştirme beklentilerimizi başka bahara erteledik.

2011-10-11

SQL Server 2012 Denali : Resource Governor Değişiklikleri

Başlığı görünce heyacanlanıp hemen aşırı beklenti içerisine girmeyelim. Resource Governor'daki beklentimiz olan I/O tarafındaki kaynak yönetimi maalesef Denali'de de gelmiyor. Denali'de Resource Governor tarafında aşağıdaki değişiklikler var:

2011-10-07

SQL Server 2008 Service Pack 3 (SP3) Çıktı!

Microsoft SQL Server 2008 Service Pack 3 (SP3) i http://www.microsoft.com/download/en/details.aspx?id=27594 adresinden indirebilirsiniz.

SQL Server 2008 SP3 ile giderilen hataların listesine http://support.microsoft.com/?kbid=2546951 adresinden ulaşabilirsiniz.


SQL Server 2008 SP3 ile ilgili Microsoft'un açıklaması aşağıdadır:

2011-10-02

Windows Authentication Olarak Bağlanan Kullanıcının Security Grubunu Bulma

SQL Server veritabanı sistemine windows authentication olarak bağlanan bir kullanıcının security grubunu iki farklı şekilde bulabilirsiniz.

2011-09-27

Performance Tuning Webcast Videosu


14 Eylül 2011 saat 21:00'de yapmış olduğum SQL Server - Performance Tuning webcast'ini kaçıranlar yada tekrardan izlemek isteyenler Çözümpark'tan videosuna ulaşabilirler.

2011-09-19

Şema Adını Değiştirme (Change Schema Name)

SQL Server'da herhangi bir nesnenin şema adını aşağıdaki kod ile değiştirebilirsiniz:

ALTER
SCHEMA [SchemaName_New] TRANSFER [SchemaName_Old].[ObjectName]

Not:  Şeması değiştirilen nesneye ait tüm yetkiler uçacağından şemayı değiştirmeden yetkilere ait scriptleri çıkarmanızı tavsiye ederim.

2011-09-07

SQL Server 2008 SP2 Kurulum Hatası ve Çözümü

Bugün sanal ortamdaki stand-alone bir SQL Server 2008 sunucumuza  SP2 yüklemesi yaparken yüklemenin normalden fazla uzaması beni şüphelendirdi. Hemen Windows Event loglarına baktım. Kurulum yaptığım andan itibaren alınan hata ve uyarıları inceledim.  Aşağıdaki iki hata dikkatimi çekti:

Hata-1:
"Cannot recover the master database. SQL Server is unable to run. Restore master from a full backup, repair it, or rebuild it. For more information about how to rebuild the master database, see SQL Server Books Online."


Hata-2:
"Script level upgrade for database 'master' failed because upgrade step 'sqlagent100_msdb_upgrade.sql' encountered error 598, state 1, severity 25. This is a serious error condition which might interfere with regular operation and the database will be taken offline. If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting. Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion."

Hatalar ile ilgili web'de araştırma yaptım fakat master veritabanını rebuild etmek dışında pek işe yarar ve dişe dokunur bir bilgiye rastlamadım ve bu bahsedilen işlem benim en son uygulayacağım yöntemlerimin arasındaydı(Her yöntem yerinde ve zamanında uygulanmalı). Geri dönüş için senaryomun ilk adımında sanal sunucunun snapshot'ı bulunuyordu. İkinci sırada ise tüm veritabanların full backup'larını bulunduruyordum(Tüm sistem veritabanları, resource veritabanı da dahil).

Sunucu sadece mesai saatlerinde kullanıldığı için zamanım genişti. SP2 kurulumunun hatalı da olsa bitmesini beklemek istedim. Normalde ortalama 5 dakikada yaptığım kurulum için tam tamına 1 saat 15 dakika bekledim fakat kurulum takıldığı noktadan bir adım bile ilerlemedi. SP2 kurulumunu Task Manager üzerinden hiç istemesem de manuel olarak sonlandırmak zorunda kaldım. SQL Server'a ağlanmaya çalışıldığında "script update oluyor" hatasını verip yeni bağlantı kabul etmiyordu. SP2 yeniden başlattığımda ise SP2 zaten yüklenmiş uyarısını veriyordu. Bu tür durumlarda olacak en kötü şey bu tür kararsız bir durumun oluşmasıdır.

Sistemi snapshot'tan geri döndürtüp; hataya neden olabilecek durumları incelemeye başladım. Birkaç durumdan sonra "Database Default Location" da Data ve Log dizinlerinin sistem üzerinde mevcut olmadığını keşfettim. "Database Default Location" ları mevcut olan bir dizin olarak değiştirdim ve SP2 setup'ını tekrardan çalıştırdım. SP2 kurulumu 5 dakika içerisinde başarılı bir şekilde tamamlandı(Bu arada sorun esnasında  Microsoft case'ı açacak mailim hazırdı fakat sorunu kendim çözdüğüm için ihtiyaç kalmadı).

Hem SQL Server 2008'ın "Database Default Location"'ı olmayan bir dizin olarak kabul etmesi hem de  SP2'nin olmayan bir dizinden dolayı bir türlü bitmemesi ayrı ayrı birer bug. Bu bugları en kısa zamanda Microsoft'a feedback olarak bildireceğim.

Bu tür bir sorunla karşılaşmamak için SP2 kurulumunda "Database Default Location" ın geçerli bir adres olup olmadığını SP geçişinin ilk adımına eklemenizi tavsiye ederim.

2011-09-06

Kurumunuzdaki En Büyük Veritabanı Anketi

"Kurumunuzdaki En Büyük Veritabanının Boyutu Kaç GB?" diye sormuştum. Ankete katılanların %27'sinin  kurumlarındaki en büyük veritabanın boyutunun 1 TB - 5 TB arasında olduğunu görüyoruz. Evet, anket sonucundaki 10 TB'dan büyük kurumların oranı da azımsanacak gibi değil.

Kurumların veri boyutları hızlı bir şekilde büyüyor. Bir zamanlar Gigabyte boyutundaki veriler bizim için hayalken şu an bırakın kurumları kişişel olarak Terabyte'lık resim, müzik, video vs dosyalarımız  oluyor. Şu an 1-5 TB boyutunda olan veritabanı büyüklükleri 5 yıl sonra 10-20 TB; 10 yıl sonra ise 50 TB boyutunu geçecektir. Veri boyutundaki bu değişimleri iyi analiz edip ona göre depolama alanları, veritabanı stratejileri, backup alma stratejilerini geliştirmek gerekir.

Düzenlediğim ankete katılan herkese teşekkür ederim. Yeni anketlerde görüşmek dileğiyle...

2011-09-04

Webcast: SQL Server - Performance Tuning

14 Eylül Çarşamba günü 21:00-22:00 saatleri arasında "SQL Server - Performance Tuning" konulu webcast'i sunuyor olacağım. Webcast'e SQL Server'daki Performace Tuning'in Query Tuning tarafına ağırlık verilecektir.

Aşağıdaki bağlantıyı kullanarak vereceğim webcast'e erişebilirsiniz:
https://www.livemeeting.com/cc/mvp/join?id=2W2SHJ&role=attend&pw=2NM%7E%60JK%7Bt

Ajanda aşağıdaki gibi olacak:
  • Performance Tuning için neleri kullanıyoruz?
  • İyi performans için neleri kullanmalıyız?
  • Kötü performans için nelerden kaçınmalıyız?
  • Table Hint kullanımında nelere dikkat etmeliyiz?
  • Temp Table, Table Variable kullanırken nelere dikkat etmeliyiz?
  • Soru-Cevap

2011-08-24

SQL Server 2008 Service Pack 3 CTP Versiyonu Görücüye Çıktı

Microsoft, SQL Server 2008 Service Pack 3'ün CTP versiyonu yayınladı. SP3 CTP; SP2'den sonra çıkan Cumulative Updates 1, 2, 3 ve 4'ü içeriyor.

SQL Server 2008 SP3 CTP versiyonuna http://www.microsoft.com/download/en/details.aspx?id=27150 adresinden ulaşıp indirebilirsiniz. SQL Server 2008 SP3 CTP versiyonu ile düzeltilen hataların listesine http://support.microsoft.com/kb/2546945 adresinden ulaşbilirsiniz.

2011-08-18

Veritabanı Adını Değiştirme - Change Database Name

Bir çok yerde ismi değiştirilecek veritabanı önce single_user mode alınıp ardından isim değişikliği yapacak T-SQL kodlar paylaşılıyor. Evet, ismi değiştirilecek veritabanı adını single_user mode alıp değiştirebilirsiniz hatta SQL Server ile ilgili bir çok kaynakta Master veritabanını seçtirerek single_user moda alma şeklinde yapılmış. Fakat sakın ola master veritabanı seçili iken ismini değiştireceğiniz veritabanını single_user moda almayın; aşağıdaki gibi hata mesajları alırsınız:

Hata Mesajı-1:
“Msg 5064, Level 16, State 1, Line 1
Changes to the state or options of database 'databasename' cannot be made at this time. The database is in single-user mode, and a user is currently connected to it.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.”

Hata Mesajı-2:
"Msg 1205, Level 13, State 68, Line 1
Transaction (Process ID XXX) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed."

Bu durumda ilgili veritabanına tüm erişimleri kesmeden veritabanı ismini değiştirip multi_user moda alamazsınız. Önce single_user  moda alıp veritabanını ismini değiştirecekseniz ilgili scriptinizi ismini değiştirmek istediğiniz veritabanını seçerek(USE) single_user mode alınız. Bu durumda single_user sizin mevcut bağlantınız olur. Bu tür sorunları ve sistem kesintisine mahal vermemek için aşağıdaki iki scripten dilediğinizi kullanıp uygulayabilirsiniz:

Script-1:

use [master]
go
-- set database to restricted_user mode
alter database [databasename] set restricted_user with rollback immediate

-- rename database name
alter database [databasename] modify name = [databasename_new]

--set database to multi-user mode
alter database [databasename] set multi_user with rollback immediate

Script-2:
use [databasename]
go

-- set database to restricted_user mode
alter database [databasename] set single_user with rollback immediate

-- rename database name
alter database [databasename] modify name = [databasename_new]
--set database to multi-user mode
alter database [databasename] set multi_user with rollback immediate


Not:  İlgili veritabanını kullanmaya çalışan session'ları aşağıdaki kod ile sonlandırabilirsiniz:

declare @tsql varchar(max)=''

select distinct @tsql = @tsql + 'kill ' + cast(request_session_id as varchar(16)) +';
'
from sys.dm_tran_locks
where resource_database_id=db_id('databasename')
group by request_session_id

exec(@tsql)

2011-08-12

Dedicated Administrator Connection (DAC)

Dedicated Administrator Connection (DAC) SQL Server 2005 ile birlikte gelen güzel, kullanışlı ve çoğu zaman hayat kurtarıcı bir özelliktir(Bir DBA için DAC, zorda kaldığında kullanabileceği bir arka kapıdır.).

SQL Server veritabanı sisteminiz bir şekilde kaynak yetersizliğinden dolayı cevap veremez halde iken(veritabanı sistemi yeni bir bağlantı kabul etmiyorken ) Dedicated Administrator Connection (DAC) ile SQL Server'a erişebilirsiniz. Bu tür durumlarda DAC, çoğu zaman sorunu çözmek için hayat kurtarıcı olur. DAC a default olarak ilgili veritabanı sunucusu üzerinden erişilebilir. DAC a uzaktan erişmek için ise sp_configure' da "remote admin connections" özelliğini aşağıdaki gibi açmak gerekir:

sp_configure 'remote admin connections',1
reconfigure;

SQL Server'a DAC ile iki şekilde ulaşabilirsiniz:

  1. Query ekranında Change Connection ile Server name alanına ADMIN:ServerName şeklinde bilgileri girip erilebilirsiniz.
  2. DOS komut satırında SQLCMD ile -A (Administrator) parametresini vererek erişebilirsiniz.
    Örnek : sqlcmd -S ServerName -U UserName -P Password -A

DAC ile ilgili bilinmesi gerekenler:

  • Her bir SQL Server instance'ı için aynı anda sadece bir adet DAC erişimi yapılabilir.
  • DAC ile erişecek kullanıcının sysadmin rolüne sahip olması gerekir.
  • DAC ile kullanabileceğiniz komutlar sınırlıdır. Örneğin DAC ile RESTORE, BACKUP komutlarını kullanamazsınız.
  • DAC default 1434 nolu portu kullanır. DAC'ın hangi portu kullandığını SQL Server Error Log'undan öğrenebilirsiniz. SQL Server servisi başlatıldığında DAC ile ilgili olarak error log'a aşağıdaki gibi mesajı yazar:
    Dedicated admin connection support was established for listening locally on port 1434.
  • Express sürümünde 7806 nolu trace flag'ı kullanmadan DAC ı kullanamazsınız.

2011-08-11

Bir Tablodaki Kümülatif Satır Toplamını Bulma

Yazılım geliştiren bir arkadaşın "Bir tablodaki kümülatif satır toplamı belli değerin altında olan kayıtları nasıl bulabilirim?" sorusuna cevap bulmak için aşağıdaki gibi bir test tablosu oluşturdum:

create table [dbo].[TableCumulative](
[id] [int] identity(1,1) not null,
[urunkodu] [varchar](16) null,
[adet] [int] null
) on [primary]


Oluşturduğumuz tablomuzdaki verilerimiz aşağıdaki gibi olsun:


TableCumulative tablosundaki  adet alanının kümülatif satır toplamlarını aşağıdaki SQL kodu ile bulabiliriz:

select id,
urunkodu,
adet,
select sum(x.adet) from tablecumulative as x where x.id <= s.id and x.urunkodu=s.urunkodu) as cumulativesum

from tablecumulative as s
order by id

Sorgu Sonucu:

Kümülatif satır toplamları 7'den küçük olan kayıtları bulalım:

select *
from(
select id,
urunkodu,
adet,

(select sum(x.adet) from tablecumulative as x where x.id <= s.id and x.urunkodu=s.urunkodu) as cumulativesum
from tablecumulative as s
)drv
where cumulativesum <=7

Sorgu Sonucu:

Habersiz

Günde bir taş-ı bina-yı ömrümün düşdi yire
Can yatar gafil binası oldı viran bi-haber

Dil bekası Hak fenası istedi mülk-i tenim
Bir devasız derde düştüm ah ki Lokman bi-haber

Bir ticaret kılamadım nakd-i ömür oldı heba
Yola geldum lakin göçmüş cümle karban bi-haber

Kös-i rihlet çaldı mevt amma henüz can bi-haber
Asker-i azaya lerze düşdi sultan bi-haber

Ağlayıp nalan edip düştün yola tenha garib
Dide giryan sine püryan akıl hayran bi-haber

Azığum yok yazığum çok,yolda dürlü korku var
Yolımu alursa n'ola ger div ü şeytan bi-haber

Yol erü yolda gerekdür çağ-u çıplak aç-u tok
Mısri'ye gel didi sana çünkü canan bi-haber

Niyazi Mısri

2011-07-30

İnsanlık için 5 TL'niz var mı?


Birleşmiş Milletler’in son 50 yılın en ağır kuraklığını yaşadığını belirterek, kıtlık alarmı verdiği Somali’de yüzde 30′u çocuk olmak üzere 3 milyondan fazla insanın içinde bulunduğu ciddi açlık felaketi ölümlere neden olmaya başladı.

Türkiye, Afrika’nın en fakir ülkelerinden Somali’de yaşanan açlık ve kıtlığa duyarsız kalmadı ve harekete geçti.

İnsani Yardım Vakfı İHH ve Deniz Feneri Derneği ile birlikte bir çok yardım kuruluşunun yanı sıra Diyanet İşleri Başkanlığı da Somali için bağış kampanyası başlattı.

40 milyonun üzerinden insanın açlık tehlikesi altında olduğu ve her gün yüzlercesinin de açlık ve susuzluktan hayatını kaybettiği Somali için en etkin yardım türü ise cep telefonlarından SMS karşılığında yapılanı. Yardım Kurululuşları ve Diyanet İşleri Başkanlığı’nın kontrolünde olan telefon numaralarına gönderilen her bir SMS 5 TL yardım yerine geçiyor.

5 TL BAĞIŞ YAPMANIN YOLU

İHH

TURKCELL, VODAFONE VE AVEA tüm hatlardan “SOMALI” yazıp 3072′ye SMS göndererek 5 TL bağışta bulunabilirsiniz.

http://www.ihh.org.tr/

Deniz Feneri Derneği

TURKCELL, VODAFONE VE AVEA’nın tüm faturalı ve kontörlü hatlarından 5560′a boş SMS göndererek 5 TL bağışlayabilirsiniz.

http://www.denizfeneri.org.tr/

DİYANET İŞLERİ BAŞKANLIĞI

1 Ağustos’tan itibaren başlayacak olan uygulama ile bütün operatörlerden “AFRIKA” yazıp 5601’e gönderilecek olan SMS’ler 5 TL karşılığında olacak, 3 SMS gönderildiğinde bir fitre bir iftar parası verilmiş olacak.

http://www.diyanet.gov.tr/



AFRİKA’DA NELER OLUYOR?

Doğu Afrika’yı kasıp kavuran kuraklık Somali başta olmak üzere Kenya, Etiyopya, Cibuti ve Uganda’da büyük bir insani felakete dönüşmüş durumda.

Kuraklık nedeni ile Afrikalı insanların bulundukları yerlerden göç etmek zorunda kaldıkları ve Kenya yakınlarında bulunana Dadaab Kampına sığınmış Somalili mültecilerin sayısının 400.000’e yükseldiği belirtiliyor.

Tek umutları mülteci kamplarında verilecek olan yemek ve su sayesinde hayatta kalabilmek olan mülteciler zor günler geçiriyor. BM raporuna göre yolculuklar esnasında iki milyon çocuk yetersiz besleniyor ve hayatta kalabilmeleri için çok acil yardıma ihtiyaç duyuyorlar.

2011-07-29

Security Vulnerabilities of Any Database Platform


NIST(National Institute of Standards and Technology)'nin, 2002 ile Haziran 2010 döneminde veritabanı teknolojisi üzerinde toparladığı istatistikler doğrultusunda SQL Server en güvenli veri tabanı olarak ortaya çıkıyor.

Konu ile ilgili kaynak makaleler:
Kaynak: Microsoft TechNet Aylık BT E-Bülteni - Temmuz 2011 Sayısı‏





Microsoft, SQL Server 2000'den bu yana veritabanı tarafında çok büyük gelişmeler kaydetti. Bana göre SQL Server, SQL Server 2005 ile tam bir enterprise ürün haline geldi. SQL Server 2008 ve SQL Server 2008 R2 ile birlikte kullanışlı ve ihtiyaç olan yeni özellikler eklendi(SQL Server 2008 İle Birlikte Gelen Yenilikler'i ilgili yazımdan okuyabilirsiniz. Bu sene sonunda yada 2012 başında çıkması beklenen ve kod adı Denali olan yeni sürümde daha kullanışlı ve işe yarar yeni özellikler gelecek). Bu gelişmelere paralel olarak zaman içerisinde rüştünü ispat eden SQL Server KOBI'lerden tutun da büyük şirketlere kadar hatta bankalarda kullanım alanı buldu. Halihazırda bildiğim kadarıyla ülkemizdeki 4 banka ana bankacılık veritabanı sistemlerini SQL Server üzerinde koşturuyor.

2011-07-28

Stop / Start SQL Server Agent Service With T-SQL

Zaman zaman çalışan SQL Server Agent servisini durdurmak yada duran SQL Server Agent servisini ise başlatmak ihtiyacımız olur. Bu ihtiyacımızı sunucuya bağlanıp servisin durumunu değiştirmek yada Central Management Server altından ilgili sunucunun Central Management Server Actions, Service Control altından yapabiliriz. Ama tüm bu seçenekler biraz uzun ve uğraştırıcı olduğu için SSMS üzerinden T-SQL ile servislerimi nasıl yönetirim diyenler cevabını aşağıda bulabilir:

Durmuş olan SQL Server Agent servisini aşağıdaki extended stored procedure yardımıyla başlatabilirsiniz:

exec xp_servicecontrol N'start',N'SQLServerAGENT'

Çalışan SQL Server Agent servisini aşağıdaki extended stored procedure yardımıyla durdurabilirsiniz:

exec xp_servicecontrol N'stop',N'SQLServerAGENT'

xp_servicecontrol  extended stored procedure aşağıdaki parametreleri alır:
  • start
  • stop
  • pause
  • continue
  • querystate
xp_servicecontrol  extended stored procedure ile dilediğiniz servisi dilediğiniz duruma getirip, durumu hakkında bilgi alabilirsiniz.

2011-07-27

SQL Server Version, Service Pack, Edition ve Cluster Bilgilerilerini Alma

SQL Server'ınızın build number'ının kaç olduğunu, hangi service pack'ın ve hangi sürümün kurulu olduğu ile birlikte cluster olup olmadığını aşağıdaki sorgu ile öğrenebilirsiniz:

SELECT SERVERPROPERTY('productversion') As Version,
SERVERPROPERTY ('productlevel') As ServicePack,
SERVERPROPERTY ('edition') As Edition,
SERVERPROPERTY('IsClustered') As isClustered

2011-07-19

SQL Server 2008 SP1 & SP2 için CU Çıktı!

SQL Server 2008 SP1 ve  SP2 için yeni CU'ler yayınladı. SQL Server 2008 SP1 için CU15; SQL Server 2008 SP2 için CU5 yayınlandı. CU'ler ile ilgili makalelere aşağıdaki bağlantılardan ulaşabilirsiniz:

KB #2555406 : Cumulative update package 15 for SQL Server 2008 Service Pack 1

KB #2555408 : Cumulative update package 5 for SQL Server 2008 Service Pack 2

SQL Server 2008 R2 SP1 CU1 Çıktı!

SQL Server 2008 R2 SP1; RTM sürüm için çıkan CU7 ve CU8 kapsamıyordu. Geçen hafta çıkan SQL Server 2008 R2 SP1 için bugün CU1 yayınlandı. Yayınlanan CU1: RTM CU7 ve CU8 deki fixleri kapsıyor.

KB #2544793 : Cumulative update package 1 for SQL Server 2008 R2 Service Pack 1

Geçen hafta yayınlanmış olan SQL Server 2008 R2 SP1 http://www.microsoft.com/download/en/details.aspx?id=26727 adresinden indirebilirsiniz.
 
Yayınlanan her türlü SP, CU'yu veritabanı sisteminize kurmadan önce muhakkak test etmenizi öneririm!

2011-07-07

SQL Server Kurulu Sunucularda Antivirus Kurmak

Veritabanı sunucunuza bir virüsün musallat olup sisteminizi işleyemez hale getirmesi, sizin için en kötü senaryolardan birisi olsa gerek. Veritabanı sisteminiz çalışmadığı zaman kurumda hayat durur. Çünkü kurumdaki tüm uygulamaların can damarı veritabanıdır. Can damarından vurulmuş bir kurumun iş sürekliliği yada disaster'ı yoksa toparlanması çok zor olabilir. Veritabanı sistemi ayakta olmayan bir kurum ayakta değildir! Bu yüzden veritabanı sisteminizi olası virüs saldırılarına karşı korumanız gerekir. SQL Server kurulu veritabanı sunucularına antivirüs kurmaya çoğu DBA soğuk bakar. Soğuk bakmasının temel sebepleri: antivirüs programının ne zaman ne yapacağının tam olarak kestirilememesi, veritabanı sistemine ait bir bileşenin antivirüs tarafından blocklanabilme ihtimali, veritabanı sistem performansının düşme riski vb. gibi risklerdir. Bu riskleri minimize etmek için antivirüs programlarında çeşitli ayarların yapılması gerekir. SQL Server kurulu sunuculardaki antivirüs'lerde aşağıdaki adımlar exclude edilmelidir:
  • SQL Server Veri Dosyaları
    • .mdf
    • .ldf
    • .ndf
  • SQL Server Backup Dosyaları
    • .bak
    • .trn
  • Fulltext Katalog Dosyaları
  • Eğer kurulu ise SQL Analysis veri dosyalarının barındığı dizin
  • Eğer sunucu cluster ise
    • Quorum Disk Sürücüsü
    • C:\Windows\cluster
Belirli testlerden sonra tüm standalone, cluster ve geocluster veritabanı sunucularımıza antivirüs kurduk. Tabi antivirüs kurmanın yanında veritabanı sunucularında aşağıdaki adımları da uygulayarak veritabanı sisteminizi daha güvenli hale getirebilirsiniz:
  1. Genel internet erişiminin engellenmesi,
  2. Firewall'ın açık hale getirilmesi,
  3. Diğer sunucular tarafından dosya çalıştırmaya izin vermeme, SQL'e erişim dışında bir yetki vermeme,
  4. Veritabanı sunucusunun HTTP server olarak kullanılmaması(IIS yada Apache çalıştırmama),
  5. Veritabanı sunucusunda file sharing'den kaçınmak.

2011-07-06

SQL ve Performans Üzerine

Bu gece twitter'da T-SQL Code Review da performans ile ilgili bir kaç hususu 160 karakter ile arzı endam eyledik, merak eden zevat bunları aşağıda bulabilir:

  • T-SQL de WHERE koşulları eşitsizlik üzerine kurulu geliştiriciye eşittir i aşılamak gerekir.Zira tuttuğu yolun eşiti çıkmaz.
  • Cross Joini Inner Joine dönüştüremeyen geliştiricinin tüm yolları CROSS dur, table/index SCAN dan bir türlü başını SEEK e çeviremez.
  • SELECT * ı alışkanlık haline getirmiş bir geliştirici Network u kendisine tahsis edilmiş Formula 1 pisti zanneder. Kodu trafiği alt üst eder!
  • İyi bir SQL ci az kod ile çok şey alabilendir; çok şey ile az kaynak tüketendir; veriyi disk yerine cache den okutabilendir.
  • Kodu ORDER BY a alışmış olan kişileri ORDER BY (hizaya çekmek) yapmak zordur.
  • Çok büyük kayıtlara sahip Temp Table kullanma hastalığına yakalanmış bir geliştiriciyi Physical Table Hastanesinde tedavi etmek gerekir.

2011-07-04

LOGINPROPERTY

Login policy ayarları hakkında bilgi verir.


Syntax:
LOGINPROPERTY ( 'login_name' , 'property_name' )

Parametreler:
login_name: Hakkında bilgi alınacak SQL Server login adı
propertyname: Login için bazı özellik bilgileri geri döndürür. Propertyname aşağıdaki değerlerden birini olabilir:

BadPasswordCount : Yanlış bir parola ile girişlerin ardışık denemelerinin sayısını döndürür.

BadPasswordTime : Yanlış bir parola ile giriş yapmak için son girişim zamanını döndürür.

DaysUntilExpiration : Parolanın süresi kadar gün sayısını döndürür.

DefaultDatabase : Kullanıcının giriş için default veritabanını döndürür.

DefaultLanguage : Kullanıcının giriş için varsayılan dilini döndürür.

HistoryLength : Şifre politikası uygulama mekanizmasını kullanarak, giriş için izlenen parola sayısını döndürür. 0: Password Policy uygulanmıyorsa. 1: Password Policy uygulanıyorsa.

IsExpired : Oturum açma süresinin dolup dolmadığı hakkında bilgi verir.

IsLocked : Loginin kilitli olup olmadığı hakkında bilgi verir.

IsMustChange : Bir sonraki girişte şifrenin değiştirilmesinin gerekip gerekmediğini hakkında bilgi verir.

LockoutTime : Lock tarihini geri döndürür.

PasswordHash : Şifrenin hash halini geri döndürür.

PasswordLastSetTime : Geçerli parolanın set edildiği tarihi döndürür.

Not: Login üzerinde VIEW yetkisini gerektirir. Password Hash için CONTROL SERVER yetkisini gerektirir.

Örnek-1: Mehmet kullanıcısının bir sonraki oturumda şifresinin değiştirilmesinin zorunlu olup olmadığını kontrol edelim

SELECT LOGINPROPERTY('mehmet', 'IsMustChange');

Örnek-2: Mehmet kullanıcısının lock olup olmadığını kontrol edelim

SELECT LOGINPROPERTY('mehmet', 'IsLocked');

Örnek-3: Lock olan tüm kullanıcıların listesini aşağıdaki T-SQL ile alabilirsiniz:

select name
from sys.server_principals
where loginproperty(name, 'IsLocked') =1

2011-07-02

SQL Server'da Görevler Ayrılığı (Separation of Duties)

Güvenlik giderek kurumlar için daha da çok önem kazanmaktadır. Bu doğrultuda kurumlar önemli verilerini korumak amacıyla kullanıcı ve yöneticilerin yetkilerini minimum seviyeye çekmek istemektedirler.

En basit ifadesiyle görevler ayrılığı ilkesi kurum için tehditleri ve güvenlik açıklarını önlemek üzere kullanıcıların yetkilerini düzenlemektir. Görevler ayrılığı ilkesini benimseyen kurumlar, tüm yetkilere sahip SQL Server DBA kullanıcılarının yetkilerini de düzenlemeye ihtiyaç duymaktadırlar.

SQL Server 2008 R2 yasal uyumluluk ve güvenlik uygulamalarını gerçekleştirmek üzere gerekli olan tüm araçları bünyesinde sunmaktadır. Görevler Ayrılığı ilkesinin gereksinimlerini uygulayarak verilerin korunmasını sağlarken, DBA kullanıcılarının da verimli çalışmaya devam edebilmeleri için neler yapılması gerektiğine dair sunduğumuz makale için: SQL Server Seperation of Duties

Kaynak: Microsoft TechNet

2011-06-23

SQL Server Agent Job, Schedule'ı Bittiği Halde Çalışıyor!

Bir SQL Server Agent job tanımladınız. Job frekansını recuring olarak set ettiniz. Job schedule'ını daily olarak ayarladınız. Job'ın çalışması için başlangıç ve bitiş tarihleri verdiniz. Job'ınızın bitiş tarihi bittikten sonra SQL Server Agent servisini restart ettiniz.  İşte tam bu noktada film kopuyor! O da ne, job'ınızın en son çalışma tarihi geçildiği halde job'ınız hala çalışmaya devam ediyor. Job Activity Monitor'de baktığınızda job'ınızın Next Run ı olmayacak ama Last Run ı sürekli olacak. Bu durum SQL Server Agent servisinin bir bug'ı ve bu bug Microsoft tarafından teyid edilmiş durumda. Sorun SQL Server Agent Job servisinin schedule algoritmasının hata üretmesinden kaynaklanıyor.

Çözüm: Aşağıdaki sürümler için ilgili Cumulative Update'leri yüklemek:
  1. SQL Server 2008 SP1 için CU 11 yüklemek
  2. SQL Server 2008 SP2 için CU 2 yüklemek
  3. SQL Server 2008 R2 için CU 6 yüklemek

2011-05-21

Yetki Kontrolü Yapma

/*
Bir veritabanında Delete yetkisi olan kullanıcıları aşağıdaki SQL kod  ile bulabilirsiniz:
*/

SELECT
a.*,
b.*
FROM sys.database_principals a
INNER JOIN sys.database_permissions b ON b.grantee_principal_id = a.principal_id
WHERE b.permission_name = 'DELETE'

2011-05-02

Microsoft SQL Server 2005/2008 Failover Clustering Workshop

Batuhan Yıldız'ın konuşmacı olacak katılacağı Microsoft SQL Server 2005/2008 Failover Clustering Workshop'unda olacağım.

Level: Up to 300
Tarih: 3-5 Mayıs 2011
Yer: Bellevue Residence, Aydın Sokak. No:7 Levent, 34340

Gündem:
Module 1: SQL Server High Availability Solutions
Module 2: Clustering Windows Server 2008 R2
Module 3: Configuring the Distributed Transaction Coordinator (MSDTC)
Module 4: Planning to Cluster SQL Server 2008
Module 5: Implementing a SQL Server 2008 Failover Cluster
Module 6: Rolling Upgrades and Updates to SQL Server 2008
Module 7: Maintaining and Troubleshooting a Clustered Instance of SQL Server 2008

2011-04-09

"The cluster resource of the Sql Server does not have a dependency on it" Hatası

Mevcut  cluster veritabanı sunucunuza yeni disklerin eklenmesi gerekebilir. Bu durumda disklerinizi Storage ekibinden alıp Cluster ekibine teslim ettiniz. Cluster ekibiniz de bu diskleri cluster a eklemiş olsun.  Bu yeni disklere başka sunuculardaki veritabanlarınızı restore yöntemiyle taşımak istiyorsunuz. Bu taşıma işlemi için detaylı düşünüp veritabanı kısmını ilgilendiren onlarca adımı tek tek yazıp; bu adımlarım scriptlerini çıkardınız. Bu scriptleri tek tek çalıştırıyorsunuz. Fakat restore adımında aşağıdaki hata ile karşılaşıyorsunuz:

Hata:
Msg 5184, Level 16, State 2, Line 1
Cannot use file 'X:\XXX.mdf' for clustered server. Only formatted files on which the cluster resource of the server has a dependency can be used. Either the disk resource containing the file is not present in the cluster group or the cluster resource of the Sql Server does not have a dependency on it.
Msg 3156, Level 16, State 3, Line 1
File 'XXX_data' cannot be restored to 'X:\XXX.mdf' . Use WITH MOVE to identify a valid location for the file.
Msg 5184, Level 16, State 2, Line 1
Cannot use file 'Y:\\XXX_1.ldf' for clustered server. Only formatted files on which the cluster resource of the server has a dependency can be used. Either the disk resource containing the file is not present in the cluster group or the cluster resource of the Sql Server does not have a dependency on it.
Msg 3156, Level 16, State 3, Line 1
File 'XXX_log' cannot be restored to 'Y:\\XXX_1.ldf'. Use WITH MOVE to identify a valid location for the file.
Msg 3119, Level 16, State 1, Line 1
Problems were identified while planning for the RESTORE statement. Previous messages provide details.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.


Çözüm: Yeni eklediğiniz X:\ ve Y:\ disklerinizi SQL Server Cluster kaynaklarına ekleyin ve işlem adımlarınıza kaldığınız yerden devam edin.

Benim gibi tüm adımları çıkarıp, bu adımların ne kadar süreceğini biliyorsanız; uzun sürecek adımlarda çayınızı alıp kemali afiyetle yudumlayabilirsiniz yada yürüyüş yapabilirsiniz.

2011-04-06

Bulut ve Sunucu Ortamlarında Yeni Teknolojiler ve Güvenli Bilişim

7 Mayıs Cumartesi  günü  Bulut ve Sunucu Ortamlarında Yeni Teknolojiler ve Güvenli Bilişim konulu tam günlük Üniversite semineri düzenleniyor.

AJANDA
09:30–10:00 Kayıt
10:00–11:00 Yeni Nesil Siber Tehditler Karşısında Eski Tip Savunma Yöntemlerinin Yetersizliği – Huzeyfe ÖNAL
11:00–11:15 Çay Kahve Arası
11:15–12:15 Windows Intune ve Office 365 – Hakan UZUNER
12:15–13:15 Öğle Yemeği

13:15–14:15 Sanallaştırmada Hyper-V & Virtual Machine Manager Düeti – Serhat AKINCI
14:15–14:30 Çay Kahve Arası
14:30–15:30 DDoS Saldırıları ve BotNet Sorunu – Huzeyfe ÖNAL
15:30–15:45 Çay Kahve Arası
15:45–16:45 Shadow Forensics – İbrahim Saruhan –SANS
16:45–17:00 Kapanış

Adres : Ege Üniversitesi Bilgisayar Mühendisliği Bölümü 2.Kat B4 Amfisi - Bornova Metro Karşısı
Kayıt için http://www.cozumpark.com/register/kayit.aspx

2011-04-03

Tablodaki Bir Kayıtın Kapladığı Yeri Bulma

Herhangi bir tablonuzdaki bir kayıtın(row) ne kadar yer kapladığını(size) merak ediyorsanız aşağıdaki SQL ile bunu alabilirsiniz:

select sum(max_length) As ColumnSize
from sys.columns sc
where object_id=object_id('Musteri')


Bir veritabanındaki tüm tabloların row size'ını ise aşağıdaki SQL ile alabilirsiniz:

select object_name(object_id),
sum(max_length) As ColumnSize
from sys.columns sc
group by object_name(object_id)

2011-03-27

Fragmente Indeksleri Rebuild Etme

İndekslerin fragmente olması istenmeyen bir durumdur. Fragmente olan indexlerin belirli periyotlarda rebuild/reorganize edilmesi gerekir.

Veritabanızda fragmente oranı %30 un üzerinde üzerinde olan indeksleri bulup rebuild eden T-SQL kod aşağıdaki gibidir:

declare @SQLstmt varchar(max)

set @SQLstmt =''
select @SQLstmt =@SQLstmt + 'alter index ' + i.name + ' on ' + object_name(s.object_id ) + ' rebuild with(online=on);--pagecount:' + cast(s.page_count as varchar(16)) + '
'
from sys.dm_db_index_physical_stats(db_id(db_name()),null,null,null,null) s
inner join sys.indexes i on s.object_id=i.object_id and s.index_id=i.index_id
where s.avg_fragmentation_in_percent>30
and s.index_id>0
order by s.page_count

exec(@SQLstmt )

Dilerseniz aynı işlemi dinamik tek bir SQL cümlesi yerine cursor ile de halledebilirsiz.

2011-03-25

Bilişim Zirvesi 2011 Sunum ve Video Görüntüleri

Microsoft Bilişim Zirvesi 2011'e katılamayanlar yada zirveye katılıp ta zirvedeki sunum ve video görüntülerine ulaşmak isteyenler http://www.microsoft.com/turkiye/cloud/localEvents.aspx adresinden ulaşabilirler.

2011-03-24

SQL Server Profiler Template Dosyaları Nerde Tutulur?

SQL Server Profiler uygulamasında oluşturmuş olduğumuz template'ler diskinizin belli bir lokasyonunda tutulur. Bu lokasyonlar SQL Server 2005 ve SQL Server 2008 için aşağıdaki gibidir:


SQL Server Profiler 2008 için template dizini:
C:\Documents and Settings\KullaniciKodunuz\Application Data\Microsoft\SQL Profiler\10.0\Templates\Microsoft SQL Server\100


SQL Server Profiler 2005 için template dizini:
C:\Documents and Settings\KullaniciKodunuz\Application Data\Microsoft\SQL Profiler\9.0\Templates\Microsoft SQL Server\90

2011-03-23

İş Kritik Uygulamalar için Performans Semineri

Tarih: 28 Mart 2011 Pazartesi
Saat : 09.00 - 16.15
Yer  : Microsoft İstanbul Ofisi

İş kritik uygulamalar konusunda çalışan veri platformu mimarları için düzenlenecek seminer serisinin ilki “İş Kritik Uygulamalar için Performans” konusuyla gerçekleştirilecek.

İş kritik uygulamaların performansı kurumların arzu ettikleri hizmet seviyelerini müşteri ve iş ortaklarına sağlayabilmeleri açısından yüksek önem taşır. Bu seminerde özellikle iş kritik uygulamalarınızın üzerinde çalıştığı SQL Server veritabanlarının izlenmesi ve performans iyileştirmesi konularına yer verilecektir.

Seminer Microsoft SQL Server geliştirme ekibinde de çalışmış, konusunda 15 yılı aşkın tecrübesi bulunan Ramesh Meyyappan tarafından İngilizce verilecektir.

Gündem

09.00 - 09:30 Karşılama ve İkram
09.30 - 10.45 Monitoring and Tuning CPU, memory & Disk utilization to reduce Total Cost of Ownership (TCO) - Part I
10.45 - 11.00 Kahve Arası
11.00 - 12.15 Monitoring and Tuning CPU, memory & Disk utilization to reduce Total Cost of Ownership (TCO) - Part II
12.15 - 13.00 Öğle Yemeği
13.00 - 14.15 Monitoring and Tuning Query Execution and Locking Part I
14.15 - 14.45 Ara
14.45 - 16.00 Monitoring and Tuning Query Execution and Locking - Part II
16.00 - 16.15 Soru ve Cevap

2011-03-14

SQL Azure'da Limitler ve Kısıtlamalar









SQL Azure'da aşağıdaki limit ve kısıtlamalar söz konusu olup; SQL Azure geçmeyi düşünenlerin bu limit ve kısıtlamaları göz ardı etmemesi gerekir:


  1. SQL Azure veritabanlarına OLEDB ile erişim desteklenmiyor.
  2. Sadece TCP/IP protokolu ile erişim destekleniyor, diğer protokoller ile erişim desteklenmiyor.
  3. SQL Azure ile SQL Server browser desteklenmiyor.
  4. SQL Azure ile Attach ve Restore komutları desteklenmiyor.
  5. SQL Server Agent yada joblar desteklenmiyor.
  6. SQL Azure'da Distributed Transaction desteklenmiyor.
  7. Database Collation olarak sadece SQL_LATIN1_GENERAL_CP1_CI_AS ı destekliyor; diğer collation lar desteklenmiyor. Diğer collation'ları tablo alanı bazında destekliyor.
  8. SQL Azure da oluşturduğunuz her tabloda clustered index'in olması zorunlu(SQL Azure heap ı desteklemiyor) yoksa insert'leriniz hata alır.
  9. Her SQL Azure Server maksimum 150 veritabanını destekliyor(master veritabanı + 149 kullanıcı veritabanı). 
  10. SQL Azure için her bir veritabanı için maximum size 50 GB ile sınırlı.
  11. SQL Azure'da Windows Authentication desteklenmiyor.
  12. SQL Azure'da veritabanları arası geçiş yapan USE komutu kullanılamıyor.
  13. SQL Azure'da Transactional Replication desteklenmiyor.
  14. SQL Azure'da Database Mirroring desteklenmiyor.
  15. SQL Azure'da Log Shipping desteklenmiyor
  16. Azure platformunda SSIS servisi kullanılamıyor.
  17. SQL Azure'da sadece Management Studio'nun  SQL Server 2008 R2 sürümü ile erişilebiliniyor. Daha eski versiyonlardaki Management Studio'lar ile erişemiyorsunuz.
  18. SQL Azure, SQL Server 2008 deki tüm T-SQL leri desteklemiyor. Desteklenmeyen T-SQL'lere http://msdn.microsoft.com/en-us/library/ee336253.aspx  adresinden ulaşabilirsiniz. 
Kaynaklar:
  1. Comparing SQL Server with SQL Azure
  2. Guidelines and Limitations in SQL Azure

2011-03-08

SQL Server Üzerinde Denetim ve Güvenlik Semineri

17 Mart 2011 Perşembe günü 10:00-11:00 saatleri arasında gerçekleştirilecek web seminerinde SQL Server üzerinde, özellikle veritabanı yöneticileri için denetim ve güvenlik yöntemlerinin ele alınacağı, SQL Server’in güvenlik mekanizması, loglama mekanizması, server ve veritabanı denetimi yöntemlerinin ayrıntılı bir biçimde incelenecektir. Osman ÇOKAKOĞLU'nun sunacağı web seminerine katılmak isteyenler Microsoft'un Canlı Web Yayınları Etkinlikleri sayfasından kayıt olabilirler.

2011-03-05

Tempdb Veritabanını Taşıma

Moving Tempdb
Sistem veritabanlarından tempdb veritabanı SQL Server servisi her start olduğunda tekrardan oluşur. Tempdb'yi taşımak için:
  1. tempdb veritabanının data ve log dosyalarının lokasyonunu değiştirmek gerekir
  2. SQL Server servisinin restart edilmesi gerekir.
Örneğin:  tempdb veritabanını D:\MSSQL dizinine taşımak için aşağıdaki SQL kodlarını çalıştırıp, SQL Server servisini restart etmek gerekir:

use master
go
alter database tempdb modify file (name = tempdev, filename = 'D:\MSSQL\tempdb.mdf')
go
alter database tempdb modify file (name = templog, filename = 'D:\MSSQL\templog.ldf')
go

2011-03-03

Password'u Boş Olan SQL Kullanıcılarını Bulma

SQL Server 2005/2008 de password u boş olan SQL kullanıcılarını aşağıdaki SQL ile bulabilirsiniz:

select name
from sys.sql_logins
where pwdcompare('', password_hash) = 1


Yine aynı şekilde şifresi abc olan SQL kullanıcıların listesini aşağıdaki SQL ile alabilirsiniz:

declare @password sysname
set @password ='abc'
select name
from sys.sql_logins
where pwdcompare(@password, password_hash) = 1

@password değişkenini zayıf şifreleri içerecek şekilde genişletirseniz sisteminizde zayıf/tamin edilebilir şifreleri olan SQL kullanıcıların listesini alıp bu şifrelerin güçlü şifreler ile değiştirilmesini sağlayabilirsiniz.

Güvenlik için veritabanı sunucularınızda bulunan tüm SQL kullanıcılarınız için password policy uygulamayı unutmayın!

2011-02-27

Sistem View'lerinin Kodunu Alma

SQL Server'da bulunan sistem view'lerinin kodlarını OBJECT_DEFINITION() function'ı ile alabilirsiniz. Örneğin sys.databases system view ının içeriğini aşağıdaki kod ile alabilirsiniz:

SELECT OBJECT_DEFINITION(OBJECT_ID('sys.databases'));

2011-02-20

Tüm Kullanıcı Veritabanlarında Kullanıcı Oluşturma

Benim gibi var olan bir logini tüm kullanıcı veritabanlarında oluşturma ihtiyacınız olmuşsa aşağıdaki t-sql kod işinize yarayacaktır:

declare @username nvarchar(128)='SQLUser',
@SQLcommand varchar(8000)

set @SQLcommand =
'if db_id(''?'')>4
begin
USE ?
if not exists(select 1 from sys.sysusers where name=''' + @username + ''' ) create user [' + @username + '] for login [' + @username + ']
end
'
exec sp_msforeachdb @SQLcommand

2011-02-19

Microsoft Türkiye Bilişim Zirvesi 2011

Microsoft Türkiye Bilişim Zirvesi, 11 Mart 2011 Cuma günü İstanbul Kongre Merkezi’nde gerçekleştirilecek. Etkinliğe Microsoft Türkiye Bilişim Zirvesi 2011 sayfası üzerinden kayıt olabilirsiniz. Etkinliğe ait ajanda aşağıdaki gibidir:

2011-02-03

Tüm Veritabanlardaki db_owner Yetkisine Sahip Kullanıcıların Listesi

Tüm veritabanlardaki db_owner'a sahip olan kullanıcıların listesini aşağıdaki tek satırlık kod ile alabilirsiniz:

exec sp_msforeachdb 'use ? exec sys.sp_helprolemember ''db_owner'''

2011-01-26

SQL Server Servisinin Başlangıç Tarihini Bulma

SQL Server servisi her start olduğunda tempdb yeniden oluşturulur. Bu yüzden tempdb veritabanının oluşma tarihi bize SQL Server servisinin başlama tarihini verir. SQL Server servisim ne zamandan beri açık diye merak edenler aşağıdaki sorgu ile cevaplarını bulabilirler:

select create_date
from sys.databases
where name = 'tempdb'

Aynı sonuca dm_os_sys_info DMV'sini kullanarak aşağıdaki kod ile de  ulaşabilirsiniz:

select sqlserver_start_time
from sys.dm_os_sys_info

2011-01-22

Error Log Dosya Sayısını Değiştirme

SQL Server'da  default olarak bir adet Current ve 6 adet Archive Error Log dosyası tutulur. Archive logların sayısının yetmediği durumlarda bu sayıyı artırabilirsiniz.

















SSMS kullanarak Management altından SQL Server Log'da mouse'ın sağ tuşunu tıklayıp aşağıdaki gibi Archive log dosya sayısını 6-99 arasında istediğiniz bir sayı verebilirsiniz. Ben bu sayıyı 11 olarak aşağıdaki gibi verdim:























SSMS GUI arayüzünü kullanmadan aşağıdaki kod ile de aynı işlemi yapabilirsiniz:

USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'NumErrorLogs', REG_DWORD, 11
GO

2011-01-19

Tüm Kullanıcı Veritabanların Backup'ını Alma(sp_msforeachdb)

Daha önce de tüm kullanıcı veritabanların full backup'ını değişik yöntemlerle alacak kodları paylaşmıştım(Bkz.Tüm Kullanıcı Veritabanlarının Full Backup'ını Alma). Şimdi ise daha önce paylaşmış olduğum kodlardan daha kısa bir kod ile tüm kullanıcı veritabanların full backup'ını alacak kodu aşağıdaki gibi paylaşıyorum:

exec sp_msforeachdb 'if db_id(''?'')>4 backup database [?] to disk = ''c:\?.bak'' with init, compression;'

sp_msforeachdb undocumented stored procedure'ı oldukça yararlı ve çoğu yerde işimizi kolaylaştıran bir sp. Tüm veritabanlarında yapacağınız işlemleri bu sp ile halledebilirsiniz.

2011-01-17

Aktif Tüm SQL Joblarını Disable Etme

Geçenlerde bir veritabanı sunucusunda bulunan tüm aktif jobları pasif yapma ihtiyacım oldu. Bu ihtiyacımı aşağıdaki gibi T-SQL kodu yazarak giderdim:
declare @cmd varchar(max)=''

select @cmd=@cmd + 'exec msdb.dbo.sp_update_job @job_id=N' + '''' + cast(job_id as varchar(36)) + '''' + ', @enabled=0' + char(13)+char(10)+ 'go' + char(13) + char(10)
from msdb.dbo.sysjobs
where enabled=1

exec(@cmd)

Umarım bu T-SQL kodu sizin de işinize yarar.

-- Kodlar SQL Server 2008  ile test edilmiştir. Koddaki değişken atamaları SQL Server 2008 ve sonrası sürümleri gerektirir.

.::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.