2. TRANSACTLON
Birden çok işlemin bir arada yapıldığı
durumlarda, eğer parçayı oluşturan işlemlerden
herhangi birinde sorun olursa, tüm işlemleri iptal
etmeyi sağlar.
Örneğin:Bir bankadan başka bir bankaya, 1000
Türk Lirası transfer edeceksiniz. İlk bankadan 1000
TL eksilirken, diğer bankaya 1000 TL ilave edilmesi
gerekir. Burada iki adet Transact-SQL komutu işler.
Ancak ilki çalıştıktan sonra diğeri çalışmaz ise, ilk
bankadan 1000 TL eksilir ama ikinci bankaya 1000
TL ilave olmaz. İşte bu tür sorunlar ile
karşılaşmamak için; Transaction yapısını
kullanmamız gerekir.
3. 1.IMPLICIT TRANSACTION
2.KULLANICI TANIMLI TRANSACTION
Implicit Transaction: Her bir Transact-SQL komutu,
transaction gibi çalışır. INSERT, UPDATE, DELETE
ifadeleri gibi. Buna geçiş
yapmak için SET IMPLICIT_TRANSACTIONS ON
ifadesi kullanılır.
Kullanıcı Tanımlı Transaction: Buradaki Transaction
ifadeleri; BEGIN TRANSACTON ve COMMIT
TRANSACTİON cümlecikleri arasında bir grup
şeklindedir.
4. SQL Server içinde çeşitli Transaction kullanımları
vardır;
BEGIN TRAN[SACTION]
[transaction_adı|@tran_adı_değeri[WlTH
MARK['açıklama']]]
Burada eğer WITH MARK kullanılırsa, hata
durumunda nereden itibaren işlemlerin iptal
edileceği belirlenir.
SAVE
TRAN[SACTION]{kaydetme_noktası|kaydetme_nok
tası_değerİ}
BEGIN DISTRIBUTED TRAN[SACTION]
[transaction_adı|@tran_adı_değeri]
5. TRANSACTION IÇINDE ÇEŞITLI SEBEPLERDEN
DOLAYI, KODLARIN ÇALIŞMASI UZUN SÜRE ALIR VE
BLOKLAMADAN DOLAYI IŞLEM YAPAMAZSA, NE
YAPACAĞIZ?
Bunun için kullanılan komut; SET LOCK_TIMEOUT
milisaniye_süre
Aşağıdaki yazılım ile 120 saniye sonra blok ortadan
kalkar;
Bunu görmek için de:
SELECT @@lock_timeout sistem fonksiyonu
kullanılır.
SET LOCK TIMEOUT 120000
9. Bunun sonucunda "guvenbank" içindeki 1907 numaralı
hesaptan 800 TL azalacak ve "kazanbank" içindeki 1907
numaralı hesaba 800 TL ilave olacaktır.
10. GÜVENLİK
SQL Server mekanizması için policy uygulanmaktadır.
Dört uygulama grubunda toplayacak olursak;
Platform
Kimlik Denetimi
Nesneler
Uygulamalar
11. AUTHENTİCATİON NEDİR?
SQL Server'a bağlanmak için yapılan kontrole;
authentication (kimlik denetimi) adı verilir. Bu
mekanizma, iki şekilde işleyebilir. Windows Authentication
veya SOL Authentication.
Windows Authentication: SQL Server'a bağlanmak için
bu Authentication mekanizması seçilirse; kimlik denetimi
Windows tarafından yapılır.
Yani kullanıcı, SOL Server'a erişebilmek için Windows'a
logon olduğu kullanıcı adı ve şifre ile SQL Server'a
bağlanır. Bundan dolayı bu kullanıcının adının ve şifresinin,
SQL Server içine eklenmesi gerekir.
12. SOL Server Authentication:
Bu mekanizmada ise yetkili kullanıcı adı ve şifre,
SOL Server sistem yöneticisi tarafından SQL Server
içinde tanımlanır. Windows yapısından bağımsız
olarak çalışır.
13. SQL SERVER 2012 SQL AUTHENTICATION ILE
OTURUM AÇILMASI
Bazı uygulamaların yazılım mimarisi gereği sadece Sql
Authentication ile çalışmak zorundadır. Bu nedenle
bizde bu özelliği nasıl aktif edeceğimizi ele alacağız.
Elimizde kurulu olan Sql Server 2012 ile Sql
Authentication modda oturum açmak istediğimizde
aşağıdaki hata bizi karşılamaktadir.
14. Bu nedenle Windows Authentication modda oturum
açalım.
Windows Authentication modda sorunsuzca oturum açıldı.
15. Security altında yer alan logins kısmına baktığımızda
kurulumun Windows Authentication modda yapılmış
olmasından dolayı varsayılanda “sa” kullanıcısının
disable olarak geldiğini görmekteyiz.
16. SQL Authentication modda oturum yapabilmek için
instance üzerinde sağ tıklayarak “properties“ menüsüne
giriş yapalım.
17. Açılan ekranda “Sql Server and Windows
Authentication mode seçimini yaparak hem
Windows hem Sql Authentication oturum açabilir
duruma geleceğiz.
18. Yukarıdaki ekranı “OK” ile geçtikten sonra
işlemin geçerli olabilmesi için SQL Server servisini
yeniden başlatmamız gerektiği bilgisi bize
aktarılmaktadır. “OK” tıklayarak bu ekranı geçelim.
19. Yukarıdaki işlemi tamamladıktan sonra “sa”
kullanıcısını enable hale getirmemiz gerekmektedir.
Bu nedenle “sa” kullanıcısı üzerinde sağ tıklayarak
“properties” menüsünü açalım.
20. Açılan ekrandaki “General” tabında “sa” kullanıcımıza bir
şifre verelim.
21. “Server Role” tabında ise “Login” kısmını “Enable”
duruma getirelim ve “OK” ile tamamlayalım.
22. Resimde de görüldüğü gibi “sa”
kullanıcısı üzerindeki kırmızı ok kalktı ve aktif hale
geldi.
23. Şimdi tekrardan “SQL
Authentication” modda oturum açmaya
çalıştığımızda yine hata almaktayız.
24. Yaptığımız işlemlerin tamamının aktif olabilmesi adına
“SQL Server” servisini yeniden başlatmamız
gerekmektedir. Bu nedenle “SQL Server” servisine sağ
tıklayarak “Restart” edelim.
26. Şu anda instance ekranında görüldüğü gibi “SQL
Authentication” mod da “sa” kullanıcısı ile oturum açmış
durumdayız.
27. Windows Authentication Mode'un Avantajları:
Birçok önemli özellik sağlar. Örneğin: Windows yapısı ile
gelen güvenlik mekanizması, izleme, şifre süresinin olması,
en az şifre uzunluğu gibi.
Tek bir kullanıcı hesabı gibi, bir Windows grubu eklenebilir.
Böylelikle birden fazla Windows kullanıcısı yönetilebilir.
Kullanıcılar SQL Server'ı oldukça hızlı açar. Bağlanırken
şifreyi hatırlamak gibi, bir sorunu olmaz.
Mixed Mode'un Avantajları:
Windows Client'ları dışındaki sistemlerin de SOL Server
bünyesine bağlanmasını sağlar. Hem karışık yapıdaki
sistemler, hem de Internet Client'ları için kullanılması
gereken bir yapıdır.
28. PRINCIPALS
Principals; bir veri tabanı içinde herhangi bir nesneyi açmak
için gerekli olan izin için kimlik denetimi tanımlamasıdır.
Üç bölümden oluşur;
SECURABLES
SQL Server içindeki nesneleri açmak için izin yetkilerini
düzenlemeye securables denir. Güvenlik modelinizi
düzenlerken farklı securables alanlarını bilmeniz gerekir.
29. PERMİSSİONS
Bölümleri açıp yönetmek için gerekli olan kurallar dizisine
permissions adı verilir. Tabiki bu, Securables yapısına
sahip Principals çerçevesinde gerçekleşir. Bunlar
birbirlerine bağlıdır.
SQL Server içindeki permissions, grant(yetki ver),
revoke(yetkiyi sil) ve deny(yasakla) olmak üzere üç
temel yapıya sahiptir.
30. LOGIN AUTHENTICATION
Server yapısında tanımlı rolleri görmek için SQL Server
Management Studio içinde bulunan Object Explorer
kısmında Security klasörü altındaki Logins klasörünü
açmamız yeterlidir.
31. Şifre süresi dolduğu zaman hesap kilitlenecektir. Kilitli bir
hesabı açmak için yapısında uygulanacak değişiklik
ALTER ifadesi ile gerçekleştirilir.
WITH PASSWORD = 'sifre1234' UNLOCK
Bir hesabı silmek için DROP ifadesinden yararlanılır.
DROP LOGIN aysen
Aynı zamanda Object Explorer içinden de silme
yapılabilir.
32. WINDOWS AUTHENTICATİON
Domain yapıları için tercih edilen bu yapı, Internet
uygulamaları için kullanılmamalıdır. Kapalı network
yapılarında Windows Server güvenlik mekanizmasının da
devreye girmesi ve merkezi yönetim, en büyük
avantajlarındandır.
34. Local Users and Groups altındaki Users klasörü üzerinde
sağ tuşa basarak New User seçeneğine tıklayalım.
User name kısmına oluşturacağımız kullanıcı adını yazarak
Create butonuna basalım.
36. Ardından sağ tuşa basarak, New Server Registration seçeneğine
tıklayalım.
Gelen ekranın Server name kısmına; bağlanılacak Server adını
yazdıktan sonra Authentication bölümünden Windows
Authentication'ı seçerek Save butonuna basalım.
Bu işlemin sonunda, bağlantının gerçekleşmediğini göreceksiniz.
Bunun sebebi; bilgisayarda bu kullanıcı olmasına rağmen, SQL
Server içinde tanımlamamış olmamızdır.
Bu işlemin başarılı olması için, kullanıcıyı SQL Server içindeki
Logins kısmında tanımlamamız gerekmektedir.
37. Tekrar Administrator ile logon olarak SQL Server'ı açalım ve
Security klasörü altında bulunan Logins seçeneği üzerinde
sağ tuşa basarak, New Login seçeneğine tıklayalım.
38. Gelen ekranda Login name kısmına
bilgisayar(domain) adı ile beraber kullanıcı adını
yazarak onaylayalım.
39. Artık bu kullanıcı ile logon olduğumuzda, SQL Server yapısına
erişebiliriz. Bunu test etmek için tekrar aysen kullanıcısı ile logon olalım.
SQL Server ile bağlantı sağladık. Ancak bazı sistem nesneleri dışında,
hiçbir kullanıcı tabanlı veri tabanlarına erişemeyiz.
Çünkü Authentication ile sadece SQL Server'a bağlantı sağlanır. Yani;
kapıyı açtık, ancak içinde işlem yapmak için, henüz bir yetkimiz yok.
40. USER
Veri tabanlarını açmak için User oluşturmak gerekir. Bu
CREATE USER ifadesi ile yapılacağı gibi, SQL Server
Management Studio içindeki Object Explorer kısmından
veri tabanı içindeki Securıty klasöründen de yapılabilir.
41. Burada daha önce Logins kısmında oluşturulmuş login adı
seçildikten sonra User name kısmına istenilen bir isim verilir.
Ayrıca guest, sys ve INFORMATI0N_SCHEMA herhangi bir
kullanıcı hesabı ile ilişkilendirilmemiş loginlerdir.
Değişiklik için ALTER USER ifadesi kullanılır. Silmek için ise
DROP USER ifadesi kullanılır.
42. EXECUTE AS
Bir stored procedure veya fonksiyon içinde EXECUTE AS ifadesi
kullanılarak güvenlik için bir kullanıcı tanımlaması yapılabilir.
Kullanım şekli aşağıdaki gibidir;
Burada kullanılan seçenekler;
CALLER: Varsayılan ayar olup, kullanıcı tanımlaması için kullanılır.
SELF: Stored procedure veya fonksiyonu oluşturan
kullanıcı tanımlaması.
OWNER: Fonksiyonun sahibinin tanımlanması.
EXECUTE AS { CALLER | ŞELF | OWNER |
kullanıcı_ad }