SlideShare a Scribd company logo
TRANSACTİON
VE GÜVENLIK
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.
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.
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]
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
UYGULAMA
Veri tabanımızın içinde "guvenbank" isimli yeni
bir tablo oluşturarak tabloyu aşağıdaki gibi
tasarlayalım.
Aşağıdaki kayıtları girelim.
“
“kazanbank" isimli yeni bir tablo oluşturarak,
tabloyu aşağıdaki gibi tasarlayalım.
İçine aşağıdaki kayıtları girelim.
SQL Query Editör içine aşağıdaki kodu yazalım ve çalıştıralım.
Bunun sonucunda "guvenbank" içindeki 1907 numaralı
hesaptan 800 TL azalacak ve "kazanbank" içindeki 1907
numaralı hesaba 800 TL ilave olacaktır.
GÜVENLİK
SQL Server mekanizması için policy uygulanmaktadır.
Dört uygulama grubunda toplayacak olursak;
 Platform
 Kimlik Denetimi
 Nesneler
 Uygulamalar
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.
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.
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.
 Bu nedenle Windows Authentication modda oturum
açalım.
 Windows Authentication modda sorunsuzca oturum açıldı.
 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.
 SQL Authentication modda oturum yapabilmek için
instance üzerinde sağ tıklayarak “properties“ menüsüne
giriş yapalım.
 Açılan ekranda “Sql Server and Windows
Authentication mode seçimini yaparak hem
Windows hem Sql Authentication oturum açabilir
duruma geleceğiz.
 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.
 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.
 Açılan ekrandaki “General” tabında “sa” kullanıcımıza bir
şifre verelim.
“Server Role” tabında ise “Login” kısmını “Enable”
duruma getirelim ve “OK” ile tamamlayalım.
 Resimde de görüldüğü gibi “sa”
kullanıcısı üzerindeki kırmızı ok kalktı ve aktif hale
geldi.
 Şimdi tekrardan “SQL
Authentication” modda oturum açmaya
çalıştığımızda yine hata almaktayız.
 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.
Şimdi tekrardan “SQL Authentication” mod da oturum açmayı
deneyelim.
 Şu anda instance ekranında görüldüğü gibi “SQL
Authentication” mod da “sa” kullanıcısı ile oturum açmış
durumdayız.
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.
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.
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.
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.
Ş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.
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.
UYGULAMA
 Bilgisayarımızda "aysen" isimli bir kullanıcı oluşturalım.
 My Computer üzerinde sağ tuşa basarak Manage
seçeneğine tıklayalım.
 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.
Database Engine görünmüyorsa, ilk olarak View menüsünden
Registered Servers seçeneğine tıklayalım.
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.
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.
Gelen ekranda Login name kısmına
bilgisayar(domain) adı ile beraber kullanıcı adını
yazarak onaylayalım.
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.
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.
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.
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 }
DİNLEDİĞİNİZ İÇİN TEŞEKKÜR
EDERİZ…

More Related Content

Viewers also liked

Stored procedure
Stored procedureStored procedure
Stored procedureoktaygokgol
 
Veri̇ tabani kurtarma i̇şlemleri̇ sunu
Veri̇ tabani kurtarma i̇şlemleri̇ sunuVeri̇ tabani kurtarma i̇şlemleri̇ sunu
Veri̇ tabani kurtarma i̇şlemleri̇ sunuoktaygokgol
 
Metin gülyüz aralık kişilik sahibi olma
Metin gülyüz aralık kişilik sahibi olmaMetin gülyüz aralık kişilik sahibi olma
Metin gülyüz aralık kişilik sahibi olmaoktaygokgol
 
Veri̇ tabani ve dosya yöneti̇mi̇
Veri̇ tabani ve dosya yöneti̇mi̇Veri̇ tabani ve dosya yöneti̇mi̇
Veri̇ tabani ve dosya yöneti̇mi̇oktaygokgol
 
Kullanici tanimli fonksi̇yons
Kullanici tanimli fonksi̇yonsKullanici tanimli fonksi̇yons
Kullanici tanimli fonksi̇yonsoktaygokgol
 

Viewers also liked (7)

Stored procedure
Stored procedureStored procedure
Stored procedure
 
Sunu
SunuSunu
Sunu
 
Veri̇ tabani kurtarma i̇şlemleri̇ sunu
Veri̇ tabani kurtarma i̇şlemleri̇ sunuVeri̇ tabani kurtarma i̇şlemleri̇ sunu
Veri̇ tabani kurtarma i̇şlemleri̇ sunu
 
Metin gülyüz aralık kişilik sahibi olma
Metin gülyüz aralık kişilik sahibi olmaMetin gülyüz aralık kişilik sahibi olma
Metin gülyüz aralık kişilik sahibi olma
 
Sunu
SunuSunu
Sunu
 
Veri̇ tabani ve dosya yöneti̇mi̇
Veri̇ tabani ve dosya yöneti̇mi̇Veri̇ tabani ve dosya yöneti̇mi̇
Veri̇ tabani ve dosya yöneti̇mi̇
 
Kullanici tanimli fonksi̇yons
Kullanici tanimli fonksi̇yonsKullanici tanimli fonksi̇yons
Kullanici tanimli fonksi̇yons
 

Similar to Itt

Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇Anar Godjaev
 
İleri Seviye T-SQL Programlama - Chapter 18
İleri Seviye T-SQL Programlama - Chapter 18İleri Seviye T-SQL Programlama - Chapter 18
İleri Seviye T-SQL Programlama - Chapter 18Cihan Özhan
 
Veritabani Programlama - Oracle IV.Egitim - View Kullanimi
Veritabani Programlama - Oracle IV.Egitim - View KullanimiVeritabani Programlama - Oracle IV.Egitim - View Kullanimi
Veritabani Programlama - Oracle IV.Egitim - View KullanimiSevdanur Genc
 
MSSQL Server Güvenlik (Security)
MSSQL Server Güvenlik (Security)MSSQL Server Güvenlik (Security)
MSSQL Server Güvenlik (Security)Abdülkadir BARLIK
 
SQL Injection - Web siteniz tehdit altında mı?
SQL Injection - Web siteniz tehdit altında mı?SQL Injection - Web siteniz tehdit altında mı?
SQL Injection - Web siteniz tehdit altında mı?Dr. Kerem Koseoglu
 
İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21Cihan Özhan
 
İleri Seviye T-SQL Programlama - Chapter 07
İleri Seviye T-SQL Programlama - Chapter 07İleri Seviye T-SQL Programlama - Chapter 07
İleri Seviye T-SQL Programlama - Chapter 07Cihan Özhan
 
Oracle 11g Distince
Oracle 11g DistinceOracle 11g Distince
Oracle 11g DistinceMerve Balcı
 
Web For Pentester ile Web Uygulama Güvenliğine Giriş
Web For Pentester ile Web Uygulama Güvenliğine GirişWeb For Pentester ile Web Uygulama Güvenliğine Giriş
Web For Pentester ile Web Uygulama Güvenliğine GirişUmut Ergin
 
Sql server 2008 Express & Sql Server management Studio 2008 express Kurulumu
Sql server 2008 Express & Sql Server management Studio 2008 express KurulumuSql server 2008 Express & Sql Server management Studio 2008 express Kurulumu
Sql server 2008 Express & Sql Server management Studio 2008 express KurulumuSercan Yemeni
 
Sistemler Arası Dosya Nasıl Aktarılır? IIS ve FTP Kurulumu
Sistemler Arası Dosya Nasıl Aktarılır? IIS ve FTP KurulumuSistemler Arası Dosya Nasıl Aktarılır? IIS ve FTP Kurulumu
Sistemler Arası Dosya Nasıl Aktarılır? IIS ve FTP KurulumuTurkHackTeam EDU
 
İleri Seviye T-SQL Programlama - Chapter 12
İleri Seviye T-SQL Programlama - Chapter 12İleri Seviye T-SQL Programlama - Chapter 12
İleri Seviye T-SQL Programlama - Chapter 12Cihan Özhan
 

Similar to Itt (17)

Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇Veri̇tabani ve Kullanici Yöneti̇mi̇
Veri̇tabani ve Kullanici Yöneti̇mi̇
 
İleri Seviye T-SQL Programlama - Chapter 18
İleri Seviye T-SQL Programlama - Chapter 18İleri Seviye T-SQL Programlama - Chapter 18
İleri Seviye T-SQL Programlama - Chapter 18
 
Veritabani Programlama - Oracle IV.Egitim - View Kullanimi
Veritabani Programlama - Oracle IV.Egitim - View KullanimiVeritabani Programlama - Oracle IV.Egitim - View Kullanimi
Veritabani Programlama - Oracle IV.Egitim - View Kullanimi
 
MSSQL Server Güvenlik (Security)
MSSQL Server Güvenlik (Security)MSSQL Server Güvenlik (Security)
MSSQL Server Güvenlik (Security)
 
SQL Injection - Web siteniz tehdit altında mı?
SQL Injection - Web siteniz tehdit altında mı?SQL Injection - Web siteniz tehdit altında mı?
SQL Injection - Web siteniz tehdit altında mı?
 
İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21
 
SQL Injection
SQL InjectionSQL Injection
SQL Injection
 
İleri Seviye T-SQL Programlama - Chapter 07
İleri Seviye T-SQL Programlama - Chapter 07İleri Seviye T-SQL Programlama - Chapter 07
İleri Seviye T-SQL Programlama - Chapter 07
 
Hafta13
Hafta13Hafta13
Hafta13
 
Oracle 11g Distince
Oracle 11g DistinceOracle 11g Distince
Oracle 11g Distince
 
Sql Injection
Sql Injection Sql Injection
Sql Injection
 
Web For Pentester ile Web Uygulama Güvenliğine Giriş
Web For Pentester ile Web Uygulama Güvenliğine GirişWeb For Pentester ile Web Uygulama Güvenliğine Giriş
Web For Pentester ile Web Uygulama Güvenliğine Giriş
 
Sql server 2008 Express & Sql Server management Studio 2008 express Kurulumu
Sql server 2008 Express & Sql Server management Studio 2008 express KurulumuSql server 2008 Express & Sql Server management Studio 2008 express Kurulumu
Sql server 2008 Express & Sql Server management Studio 2008 express Kurulumu
 
Sistemler Arası Dosya Nasıl Aktarılır? IIS ve FTP Kurulumu
Sistemler Arası Dosya Nasıl Aktarılır? IIS ve FTP KurulumuSistemler Arası Dosya Nasıl Aktarılır? IIS ve FTP Kurulumu
Sistemler Arası Dosya Nasıl Aktarılır? IIS ve FTP Kurulumu
 
Hayrettin kunuk
Hayrettin kunukHayrettin kunuk
Hayrettin kunuk
 
İleri Seviye T-SQL Programlama - Chapter 12
İleri Seviye T-SQL Programlama - Chapter 12İleri Seviye T-SQL Programlama - Chapter 12
İleri Seviye T-SQL Programlama - Chapter 12
 
Windows server 2008
Windows server 2008 Windows server 2008
Windows server 2008
 

More from oktaygokgol

kullanıcı tanımlı fonksiyonlar
kullanıcı tanımlı fonksiyonlarkullanıcı tanımlı fonksiyonlar
kullanıcı tanımlı fonksiyonlaroktaygokgol
 
9.hafta cüneyt tomruk
9.hafta cüneyt tomruk9.hafta cüneyt tomruk
9.hafta cüneyt tomrukoktaygokgol
 
7.hafta kadir dikmen
7.hafta kadir dikmen7.hafta kadir dikmen
7.hafta kadir dikmenoktaygokgol
 
Veri̇ tabani oluşturma ve yapilandirma
Veri̇ tabani oluşturma ve yapilandirmaVeri̇ tabani oluşturma ve yapilandirma
Veri̇ tabani oluşturma ve yapilandirmaoktaygokgol
 
Sql server 2012 kurulum sunu
Sql server 2012 kurulum sunuSql server 2012 kurulum sunu
Sql server 2012 kurulum sunuoktaygokgol
 

More from oktaygokgol (9)

Konu anlatım
Konu anlatımKonu anlatım
Konu anlatım
 
kullanıcı tanımlı fonksiyonlar
kullanıcı tanımlı fonksiyonlarkullanıcı tanımlı fonksiyonlar
kullanıcı tanımlı fonksiyonlar
 
9.hafta cüneyt tomruk
9.hafta cüneyt tomruk9.hafta cüneyt tomruk
9.hafta cüneyt tomruk
 
8.hafta
8.hafta8.hafta
8.hafta
 
7.hafta kadir dikmen
7.hafta kadir dikmen7.hafta kadir dikmen
7.hafta kadir dikmen
 
Sunu
SunuSunu
Sunu
 
Veri̇ tabani oluşturma ve yapilandirma
Veri̇ tabani oluşturma ve yapilandirmaVeri̇ tabani oluşturma ve yapilandirma
Veri̇ tabani oluşturma ve yapilandirma
 
Sunu
SunuSunu
Sunu
 
Sql server 2012 kurulum sunu
Sql server 2012 kurulum sunuSql server 2012 kurulum sunu
Sql server 2012 kurulum sunu
 

Itt

  • 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
  • 6. UYGULAMA Veri tabanımızın içinde "guvenbank" isimli yeni bir tablo oluşturarak tabloyu aşağıdaki gibi tasarlayalım.
  • 7. Aşağıdaki kayıtları girelim. “ “kazanbank" isimli yeni bir tablo oluşturarak, tabloyu aşağıdaki gibi tasarlayalım.
  • 8. İçine aşağıdaki kayıtları girelim. SQL Query Editör içine aşağıdaki kodu yazalım ve çalıştıralım.
  • 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.
  • 25. Şimdi tekrardan “SQL Authentication” mod da oturum açmayı deneyelim.
  • 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.
  • 33. UYGULAMA  Bilgisayarımızda "aysen" isimli bir kullanıcı oluşturalım.  My Computer üzerinde sağ tuşa basarak Manage seçeneğine tıklayalım.
  • 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.
  • 35. Database Engine görünmüyorsa, ilk olarak View menüsünden Registered Servers seçeneğine tıklayalı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 }