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.
Bir Veritabanı Yöneticisinin Notları #SQL #Server #DBA
2011-09-07
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...
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:
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.
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)
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:
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:
- Query ekranında Change Connection ile Server name alanına ADMIN:ServerName şeklinde bilgileri girip erilebilirsiniz.
- 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:
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:
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:
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
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ı?
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:
- SQL Server delivers industry-leading security
- SQL Server delivers industry-leading security (updated)
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:
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
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
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
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!
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-12
SQL Server Code Name "Denali" CTP3
SQL Server Code Name "Denali" CTP3 versiyonunu http://www.microsoft.com/betaexperience/pd/SQLDCTP3CTA/enus/default.aspx adresinden indirebilirsiniz.
SQL Server Code Name "Denali" ile ilgili kaynaklar:
SQL Server Code Name "Denali" ile ilgili kaynaklar:
- Whitepaper: SQL Server-What's New
- Video: SQL Server and the Data Explosion
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
- Genel internet erişiminin engellenmesi,
- Firewall'ın açık hale getirilmesi,
- Diğer sunucular tarafından dosya çalıştırmaya izin vermeme, SQL'e erişim dışında bir yetki vermeme,
- Veritabanı sunucusunun HTTP server olarak kullanılmaması(IIS yada Apache çalıştırmama),
- 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
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
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:
Çözüm: Aşağıdaki sürümler için ilgili Cumulative Update'leri yüklemek:
- SQL Server 2008 SP1 için CU 11 yüklemek
- SQL Server 2008 SP2 için CU 2 yüklemek
- 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'
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
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.
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
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)
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.
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
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
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:
- SQL Azure veritabanlarına OLEDB ile erişim desteklenmiyor.
- Sadece TCP/IP protokolu ile erişim destekleniyor, diğer protokoller ile erişim desteklenmiyor.
- SQL Azure ile SQL Server browser desteklenmiyor.
- SQL Azure ile Attach ve Restore komutları desteklenmiyor.
- SQL Server Agent yada joblar desteklenmiyor.
- SQL Azure'da Distributed Transaction desteklenmiyor.
- 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.
- SQL Azure da oluşturduğunuz her tabloda clustered index'in olması zorunlu(SQL Azure heap ı desteklemiyor) yoksa insert'leriniz hata alır.
- Her SQL Azure Server maksimum 150 veritabanını destekliyor(master veritabanı + 149 kullanıcı veritabanı).
- SQL Azure için her bir veritabanı için maximum size 50 GB ile sınırlı.
- SQL Azure'da Windows Authentication desteklenmiyor.
- SQL Azure'da veritabanları arası geçiş yapan USE komutu kullanılamıyor.
- SQL Azure'da Transactional Replication desteklenmiyor.
- SQL Azure'da Database Mirroring desteklenmiyor.
- SQL Azure'da Log Shipping desteklenmiyor
- Azure platformunda SSIS servisi kullanılamıyor.
- 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.
- 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.
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:
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
Sistem veritabanlarından tempdb veritabanı SQL Server servisi her start olduğunda tekrardan oluşur. Tempdb'yi taşımak için:
- tempdb veritabanının data ve log dosyalarının lokasyonunu değiştirmek gerekir
- SQL Server servisinin restart edilmesi 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!
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'));
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
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'''
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
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.
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.
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.
2010-12-26
SQL Server Authentication Mode
SQL Server iki farklı şekilde bağlantıları kabul eder. Bunlar:
Windows Authentication
Bu modda sadece Windows login'leri ile SQL Server'a erişilebilir. Windows Authentication, Kerberos güvenlik protokolünü kullanır.
Mixed Mode Authentication(mixed)
Bu moddaki bir SQL Server'a hem Windows authentication hem de SQL Server authentication ile erişilebilir.
SQL Server kurulurken default olarak windows authentication mode'da kurulur. SQL Server'ınızı dilerseniz kurulum esnasında mixed mode(Windows and SQL Server Authentication Mode) olarak ayarlayabilirsiniz.
Aşağıdaki dört farklı yöntemde SQL Server'ınızın hangi Authentication Mode'a olduğunu öğrenebilirsiniz:
Windows Authentication
Bu modda sadece Windows login'leri ile SQL Server'a erişilebilir. Windows Authentication, Kerberos güvenlik protokolünü kullanır.
Mixed Mode Authentication(mixed)
Bu moddaki bir SQL Server'a hem Windows authentication hem de SQL Server authentication ile erişilebilir.
SQL Server kurulurken default olarak windows authentication mode'da kurulur. SQL Server'ınızı dilerseniz kurulum esnasında mixed mode(Windows and SQL Server Authentication Mode) olarak ayarlayabilirsiniz.
Aşağıdaki dört farklı yöntemde SQL Server'ınızın hangi Authentication Mode'a olduğunu öğrenebilirsiniz:
- SSMS Kullanarak :
SQL Server Management Studio Object Explorer'da , server adının üzerinde sağı tıklayarak, Properties'den Security sayfasında SQL Server Authentication modunu öğrenebilirsiniz.
- ServerProperty ile
serverproperty() fonksiyona IsIntegratedSecurityOnly parametresini verererek SQL Server'ın Authentication modunu öğrenebilirsiniz:
SELECT CASE SERVERPROPERTY('IsIntegratedSecurityOnly')
WHEN 1 THEN 'Windows Authentication Mode'
WHEN 0 THEN 'Mixed Mode'
END as [Authentication Mode]
- xp_instance_regread Extended Stored Procedure ile
LoginMode'ı registry'den okuyarak SQL Server'ın Authentication modunu öğrenebilirsiniz:
DECLARE @AuthenticationMode INT
EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE',N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', @AuthenticationMode OUTPUT
SELECT CASE @AuthenticationMode
WHEN 1 THEN 'Windows Authentication Mode'
WHEN 2 THEN 'Mixed Mode'
ELSE 'Unknown'
END as [Authentication Mode]
- xp_logininfo Extended Stored Procedure ile
EXEC master.sys.xp_loginconfig 'login mode'
2010-12-25
SQL Server 2008 SP2 ile Gelen Yenilikler
SQL Server 2008 SP2 ile gelen yenilikler:
•Her tablo için 15.000 partition desteği. Bu destek SQL Server 2008'in Enterprise, Developer ve Evaluation sürümlerinde geçerli. 15.000 partition desteği enable edilerek kullanılabilir. Bu özelliği enable ettiğiniz veritabanının backup'ını SQL Server 2008 SP2 öncesi bir sunucu da restore edemezsiniz!
•Reporting Servis'in SharePoint Integrated Mode desteği.
•SQL Server 2008 R2 uygulamalarını ve multi-server management özelliğini SQL Server 2008 ile birlikte kullanabilme(SQL Server 2008 R2 Utility Control Point ve DAC desteği).
•Her tablo için 15.000 partition desteği. Bu destek SQL Server 2008'in Enterprise, Developer ve Evaluation sürümlerinde geçerli. 15.000 partition desteği enable edilerek kullanılabilir. Bu özelliği enable ettiğiniz veritabanının backup'ını SQL Server 2008 SP2 öncesi bir sunucu da restore edemezsiniz!
•Reporting Servis'in SharePoint Integrated Mode desteği.
•SQL Server 2008 R2 uygulamalarını ve multi-server management özelliğini SQL Server 2008 ile birlikte kullanabilme(SQL Server 2008 R2 Utility Control Point ve DAC desteği).
2010-12-24
Tempdb Veritabanı Hakkında
Tempdb veritabanı:
- SQL Server servisi restart olduğunda tekrardan oluşur.
- Model veritabanını kullanarak oluşur.
- Veritabanının recovery modelini daima SIMPLE olarak set edin.
- Checkpoint yoktur.
- Backup'ını alamazsınız.
- Data için sadece bir filegroup olmalı ve logları bir log dosyasında tutun.
2010-12-21
Unused Tables Since SQL Server Restarted
SQL Server servisinin en son restart edildiği zamandan itibaren kullanılmayan tabloları veren script aşağıdaki gibidir:
select object_schema_name(t.object_id) + '.' + t.name as TableName
from sys.dm_db_index_usage_stats i right outer join
sys.tables t on (t.object_id = i.object_id)
group by object_schema_name(t.object_id) + '.' + t.name
having sum(isnull(i.user_seeks,0)+isnull(i.system_seeks,0)+isnull(i.user_scans,0)+ isnull(i.system_scans,0)
+ isnull(i.user_lookups,0) + isnull(i.system_lookups,0)+ isnull(i.user_updates,0)+ isnull(i.system_updates,0))=0
order by object_schema_name(t.object_id) + '.' + t.name
select object_schema_name(t.object_id) + '.' + t.name as TableName
from sys.dm_db_index_usage_stats i right outer join
sys.tables t on (t.object_id = i.object_id)
group by object_schema_name(t.object_id) + '.' + t.name
having sum(isnull(i.user_seeks,0)+isnull(i.system_seeks,0)+isnull(i.user_scans,0)+ isnull(i.system_scans,0)
+ isnull(i.user_lookups,0) + isnull(i.system_lookups,0)+ isnull(i.user_updates,0)+ isnull(i.system_updates,0))=0
order by object_schema_name(t.object_id) + '.' + t.name
Korkular Aleminde -Bir Deneme
Korkular aleminde büyüyüp yeşerdik; dal verip budak saldık. Her dalımızda korkularımızın yeşerttigi yeşil yapraklarla sarmalanıp, kırmızı meyveler verdik. Yıllarca gerçeklerimizden korktuk, kaçtık, saklandık, gizlendik, sesimizi titrek kelimelerle; hatta zaman zaman ancak kendimiz duyacak kadar alçak sesle seslendik. Sesimizi, sesimizle birlikte meramızı aktarmaya çalıştık. Sesimizden korktuk, sesimizin ifade ettigi manadan korktuk. Manaların derinliğinden, derinliklerimizin gerçek özünden, özümüzün ifade edilmesinden ürktük. Ürkek bir güvercin gibi havalanıp; ürkekliğimizi uçtugumuz her diyara taşıdık. Korkumuzun gizemini, gizemimizin korkusunu derinlerimizde gizleyip ve görünmesin diye zamanın derin koyu sıvasıyla sıvadık. Sıvanın üzerini cafcaflı renklerle boyayıp, kendimizle birlikte çevremizdekileri de kandırdıgımız hissiyle teselli bulduk. Hoşumuza gitmeyen sinema sahnelerinde gözümüzü yumup; karanlık akşamın aydınlık sabahında derin hülyalarla uyanmayı umduk. Umduklarımızı istikbalimizde görmek yerine; geride bıraktık. Geride bıraktıklarımızı bir gün kurtarırız düşüncesiyle önümüze bakıp yol aldık. Tam bir arpa boyu yol almışken, mazimiz birden iki arpa boyu bizi geriye çekti; bizi sallayıp silkti; bizden olmayıp ta üzerimizde emanet olarak duran her şeyi aldı. Biz bize kaldık, kaldığımız yerden filmi sardık. Filmi sardığımız yerde "Korkular Aleminde-Bir Denemeye" reklam gelir kapısını açık bırakıp, uyku arası verdik...
21.12.2010 01:44
21.12.2010 01:44
2010-12-18
MS SQL Server 2005 SP4 RTM Yayınlandı
Microsoft SQL Server 2005 SP4 yayınladı. SQL Server 2005 Service Pack 4'i http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b953e84f-9307-405e-bceb-47bd345baece&displaylang=en adresinden indirebilirsiniz.
SQL Server 2005 Service Pack 4'te giderilen hataların listesini http://support.microsoft.com/kb/2463332 adresinden detaylı olarak inceleyebilirsiniz.
Microsoft, SQL Server 2005 SP4 ile güzel bir versiyon numarası seçmiş; versiyon numarası 9.00.5000.00 oluyor.
SQL Server 2005 Service Pack 4'te giderilen hataların listesini http://support.microsoft.com/kb/2463332 adresinden detaylı olarak inceleyebilirsiniz.
Microsoft, SQL Server 2005 SP4 ile güzel bir versiyon numarası seçmiş; versiyon numarası 9.00.5000.00 oluyor.
2010-12-14
Useful Undocumented Stored Procedures
sp_MSindexspace: İndeks boyutunu KB olarak döndürür.
Syntax:
sp_MSindexspace [ @tablename = ] 'tablename', [ @index_name = ] 'index_name'
Örnek:
EXEC sp_MSindexspace @tablename = 'Musteri'
sp_MStablespace: Tablo boyutunu KB olarak döndürür.
Syntax:
sp_MStablespace [ @name = ] 'name', [ @id = ] 'id'
Örnek:
EXEC sp_MStablespace @name = 'Personel'
sp_objectfilegroup: Objenin datafilegroup'unu döndürür.
Syntax:sp_objectfilegroup [ @objid = ] 'objid'
Örnek:USE TestDB
GO
DECLARE @id INT
SET @id = OBJECT_ID('TestDB.dbo.TestTablo')
EXEC sp_objectfilegroup @objid = @id
Syntax:
sp_MSindexspace [ @tablename = ] 'tablename', [ @index_name = ] 'index_name'
Örnek:
EXEC sp_MSindexspace @tablename = 'Musteri'
sp_MStablespace: Tablo boyutunu KB olarak döndürür.
Syntax:
sp_MStablespace [ @name = ] 'name', [ @id = ] 'id'
Örnek:
EXEC sp_MStablespace @name = 'Personel'
sp_objectfilegroup: Objenin datafilegroup'unu döndürür.
Syntax:sp_objectfilegroup [ @objid = ] 'objid'
Örnek:USE TestDB
GO
DECLARE @id INT
SET @id = OBJECT_ID('TestDB.dbo.TestTablo')
EXEC sp_objectfilegroup @objid = @id
2010-11-30
Veritabanınızın Log Dosyasını Küçültme
SIMPLE recovery modda olan veritabanınızın aşırı şişen log dosyasını küçültmek için aşağıdaki adımları uygulayabilirsiniz:
- Veritabanı FULL recovery moda alınır,
- Veritabanının FULL backup'ı alınır,
- Veritabanın Transaction Log Backup'ı alınır,
- Veritabanın Log dosyası shrink edilir.
2010-11-24
Cumulative Updates for SQL Server 2008 are available
SQL Server 2008 SP1 ve SP2 için yeni Cumulative Update'ler çıktı. CU'leri aşağıdaki adreslerden indirip kurabilirsiniz:
•SQL Server 2008 SP1 Cumulative Update 11- KB #2413738
•SQL Server 2008 SP2 Cumulative Update1 - KB #2289254
•SQL Server 2008 SP1 Cumulative Update 11- KB #2413738
•SQL Server 2008 SP2 Cumulative Update1 - KB #2289254
Kaydol:
Kayıtlar (Atom)
.::YASAL UYARI::.
©2004-2024 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.
Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.