31 Ocak 2013 Perşembe

SQL Server İpuçları - 1: Server Login & Database User

Bu yazımda değinmek istediğim konu, SQL Server terimlerine yabancı olan birçok arkadaşın "kullanıcı" genel başlığı altında birbirine sıkça karıştırdığı Server Login ve Database User arasındaki fark. Bunun sıklıkla karıştırıldığını görüyorum. Eğer örneklerle anlatacak olursak, ki bunun birçok durumda oldukça iyi sonuçlar verdiğini görüyorum, Server Login'ini bir apartmanın giriş kapısının anahtarı olarak düşünebilirsiniz. Database User'ını da bir dairenin anahtarı gibi. Bir apartmanın (SQL Server Instance'ı) genelde bir tane ana giriş kapısı ve dolayısıyla bir tane apartman anahtarı (Server Login) olur, bu apartmanda birden çok daire (veritabanı) olduğunu varsayabiliriz ve bunların da anahtarları (Database Users) ve apartmana Server Login'iniz ile girdikten sonra, girebileceğiniz dairelere de Database User'larınızla girersiniz.

Server Login (bundan böyle artık sadece Login diyeceğim)'i ile Database User (artık sadece User diyeceğim)'ı aynı isimde de olabilir, farklı isimlerde de olabilir. Örneğin benim Login'imin adı "eonsoy" olsun diyelim. Eğer "Firmalarim" isimli veritabanında bu Login'e (örneğin SELECT yetkisi) yetki vermek istersem, öncelikle "Firmalarim" veritabanında bu Login için bir User oluşturmam ve bu User ile Login'i birbirine bağlamam gerekir. SELECT yetkisini de User'a, User'ı oluşturduktan sonra verebilirim. Bir Login'in, birçok veritabanında kendisine bağlı User'ları olabilir. Buna "mapping" deniyor. Security Identifier (SID) ile User(lar), Login'lerine "map ediliyor", yani bağlanıyor. Bir veritabanındaki bir User, sadece bir Login'e bağlanabilir; bir Login birden fazla veritabanındaki User'a bağlanabilir. Yani apartman giriş kapısının anahtarı olan birisi, o apartmandaki birçok dairenin anahtarına sahip olabilir.

Sunucu (yani SQL Server Instance'ı) seviyesindeki yetkiler Login'e verilir (örn: Trace açma yetkisi), veritabanı düzeyindeki yetkiler de (örn: Select, Update, Delete gibi) Database User'lara verilir.

Not-1: "sysadmin" yetkisine sahip bir Login'in ise User'lara ihtiyacı yoktur, her veritabanında her istediğini yapabilir. Yukarıdaki örnekten, bu arkadaşın güzel bir maymuncuğu olduğunu düşünebilirsiniz.

Not-2: SQL Server 2012 ile birlikte yeni bir özellik olan Contained Databases özelliği geldi. Bu özellikte, yukarıda anlattığım mantığa alternatif bir yöntem de geldi. O yüzden Contained Database User'larını gördüğünüzde kafa karışıklığı olmasın diye not düşmek istedim. Bunlardan da başka bir yazıda bahsederim. Bununla birlikte yukarıdaki anlattığım mantık SQL Server 2012'de de mevcut, bir yere gittiği yok.

Error while enabling Windows feature : NetFx3, Error Code : -2146498298 , Please try enabling Windows feature : NetFx3 from Windows management tools and the run setup again.

HATA:
Error while enabling Windows feature : NetFx3, Error Code : -2146498298 , Please try enabling Windows feature : NetFx3 from Windows management tools and the run setup again. For more information on how to enable Windows features , see http://go.microsoft.com/fwlink/?linkid=227143

AÇIKLAMA:
SQL Server 2012 kurulumuna başladıktan sonra böyle bir hata ile karşılaşabilirsiniz. Bu hata çıktıktan hemen sonra kurulum iptal olmuyor veya hata almıyor. Bir şekilde yüklemeye devam ediyor, fakat yükleme sona erdiğinde Database Engine dahil birçok temel bileşenin başarıyla yüklenemediğini görüyorsunuz.

ÇÖZÜM:
Hata mesajında da belirtildiği gibi NetFx3 isimli Windows özelliğinin etkinleştirilmesi gerekiyor. Bu özellik etkinleştirildikten sonra tekrar SQL Server 2012 Setup çalıştırılabilir ve aynı şekilde tekrar kurulum yapılabilir. Bu sorun tekrarlamayacaktır.

24 Ocak 2013 Perşembe

Kitap: SQL Performance Explained

Selam arkadaşlar,

En son gönderime bakıyorum da, üstünden fazla geçmemiş, "SQL Performance Explained" isimli Markus Winand'a ait olan kitabı aldım ve okudum. Belki sizlere de faydası olur diye yorum yapmak isterim.

Kitap, aynen Markus'un da iddia ettiği gibi özellikle yazılımcılar için hazırlanmış bir kitap. Aldığıma ve okuduğuma kesinlikle pişman olmadığımı baştan belirtmeliyim. Markus, kitabında B-Tree Index yapısını, Index'lerin doğru şekilde kullanılabilmesi için neler yapılması ve neler yapılmaması gerektiğini, Join'leri, Clustered ve Heap tablo yapılarını, Index'lerin DML işlemleriyle ilişkilerini, Sıralama ve Gruplama işlemlerini Oracle'ı temel alarak, PostgreSQL, MySQL ve SQL Server'a da değinerek anlatmış. Hiç derinlere girip kaybolmadan, açık örnekler de vermiş. Okurken bunalmayacağınız garanti.

Özellikle T-SQL'e yeni başlayanların, yazılım geliştiricilerin, YAZILIM GELİŞTİRİCİLERİ'nin (bu arkadaşlar genelde okumayı sevmediği için vurgulama ihtiyacı duydum) muhakkak okuması gereken bir kitap. Yazılım geliştirici arkadaşların sık sık yaptıkları hatalara da değinilmiş. Tabii ki veritabanı yöneticileri de okursa iyi olur, özellikle sorunların tespitlerinde, performans iyileştirme çalışmalarında yardımı dokunur.

Özetle, kitabı tavsiye ederim arkadaşlar.

Doğrudan aşağıdaki adresten alınabilir. Ben e-kitap olarak aldım, anında ve daha ucuza!
http://sql-performance-explained.com/

Sevgiler,
Ekrem Önsoy

9 Ocak 2013 Çarşamba

Introducing Microsoft SQL Server 2012

Merhaba arkadaşlar,

Uzun zamandır bir gönderi yapmadım, bir süre tembelliğim üstümdeydi =)

O sırada tamamen hiçbir şey yaptım sanmayın sakın, hem yeni başladığım işe yoğunlaştım ve takım arkadaşlarımla burada da birçok güzel işler yaptık ve yapmaya da devam ediyoruz, hem de mümkün olduğunca kitap okumaya (hem teknik, hem diğer konularda) çalışıyorum.

Bu kitaplardan sonuncusu "Introducing Microsoft SQL Server 2012" isimli kitaptı. Evet, SQL Server 2012'yi çalışmaya biraz geç kaldım; ama ancak oldu. Bu vesileyle, bu kitabı sizlere de tavsiye etmek istedim. Microsoft Press tarafından ücretsiz olarak yayımlanan bir kitap. Temel olarak, adından da anlaşılacağı üzerei SQL Server 2012 ile gelen yeni özelliklerden bahsediyor.

http://download.microsoft.com/download/F/F/6/FF62CAE0-CE38-4228-9025-FBF729312698/Microsoft_Press_eBook_Introducing_Microsoft_SQL_Server_2012_PDF.pdf

Az ve öz olarak yeni gelen özellikler tanıtılmış, ilk bakış için yeterli. Gerisi, sizin ürünü kurcalamanıza kalmış.

Birkaç güne kadar da "Pro SQL Database for Windows Azure: SQL Server in the Cloud" ve "SQL Performance Explained" isimli kitapları sipariş etmeyi umuyorum, bu kitaplar hakkındaki yorumlarımı da umarım ilerleyen zamanlarda sizlerle paylaşabilirim.

Sevgiler,
Ekrem