MS SQL Server etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
MS SQL Server etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

2012-01-28

SQL Server 2012 RTM Sürümünün Çıkış Tarihi Belli Oldu

SQL Server 2012 RTM sürümünün ne zaman çıkacağı, sürekli sorulan ve birkaç gün öncesine kadar tam olarak cevabı bilinmeyen bir soru idi.

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

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

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