SQL Server’da Transaction Kullanımı/Yönetimi

Veritabanı sistemlerini yüzeysel kullanan geliştiriciler için çok basit gelen işlemler aslında mimari olarak geri planda bir çok iş sürecinin doğru yürütülmesiyle meydana gelmektedir. Bu iş süreçleri veritabanı motoru tarafından yönetilir. Ancak, depoladığımız veriyle ilgili işlemlerin bütünlüğü tamamen bize, yani geliştiriciye aittir. Örneğin, birbiriyle ilişkili bir sorgu yapısı var ve biz bu kodların tamamının doğru çalışması […]

Yazılımcılar İçin İleri Seviye T-SQL Programlama

CihanOzhan.Com’un eski takipçilerinin bildiği üzere ben genel olarak Oracle ve PL/SQL ile ilgili eğitim içeriği paylaşmaktayım. Ancak veritabanı teknolojilerinde ilk profesyonelleştiğim ve eğitmenlik yaptığım alan SQL Server ve T-SQL teknolojileridir.

2011 yılında Türkiye’nin ilk Oracle PL/SQL Programlama görsel eğitim setini hazırladıktan sonra PL/SQL alanında kitap yazmak istiyordum, ancak nasip T-SQL kitabımınmış.

647

KODLAB        : http://kodlab.com/BookDetail.aspx?ID=1167
Kitap İndex   : http://kodlab.com/warehouse/product/index/1166.pdf

Satın almak için;

HepsiBurada : Bağlantıya tıklayın.
İdefix            : Bağlantıya tıklayın.
KitapYurdu   : Bağlantıya tıklayın.
Amazon       : Bağlantıya tıklayın.

KodLab yayınevinden çıkardığımız Yazılımcılar İçin İleri Seviye T-SQL kitabımın özellikleri aşağıdaki gibidir;

704 Sayfa
ISBN: 9.786.055.201.142
Fiyat: 37 TL
Boyut: 15 x 21
2. Baskı

Kitap künyesi;

Bu kitapta; Dünya’nın en iyileri arasına giren SQL Server veritabanı yönetim sistemini, temelden ileri seviyeye doğru uygulamalarla anlatmaktadır. Temel seviye konular hızlı geçilerek, ileri seviye konulara daha çok yer verilmiştir. Bir standart olan SQL sorgu dilini tüm detaylarıyla öğrenirken, ileri seviye uygulamalar geliştirebileceğiniz SQL Server’ın sorgu dili olan T-SQL’i de temelden uzmanlık seviyesine kadar tüm detaylarıyla öğreneceksiniz.

Veritabanı yönetim sistemleri; programlama dillerinden bağımsız olması nedeniyle, veritabanı desteği ile ilgili işlem yapılacak tüm yazılım alanlarında kullanılabilir. Geliştirilecek yazılım; Windows platformunda çalışmayacak olsa bile, servis mimarili uygulamalarda Windows sunucu üzerinde çalışan SQL Server üzerinden XML, WCF, Web Servis ya da diğer servis ve veri transferi gerçekleştirmeyi sağlayan teknolojilerle birlikte, Linux ya da bir başka işletim sistemi üzerinde çalışacak herhangi bir yazılıma veri yönetimi yetenekleri kazandırılabilir.

Ayrıca, SQL Server’ın yönetimsel derinliklerine ve SQL Server DBA için gerekli programsal konulara da yer verilmiştir. Yazılım geliştiricilere yönelik temelden, ileri seviyeye doğru, bol örnek ve uygulama ile tüm SQL Server programlama alanlarını kapsayan bu eser ile siz de veritabanı yönetim sistemlerinde uzmanlaşacaksınız!

Kitap ile birlikte verilen CD içerisinde de Görsel Eğitim Videoları ve konulara ait Kaynak Kodlar’ı bulacaksınız.

Kitap Kimlere Hitap Ediyor?

Veritabanı yönetim sistemleri dillerden bağımsız olması nedeniyle veritabanı ile ilgili işlem yapılacak Windows platformunda çalışan tüm yazılım alanlarında kullanılabilir. Geliştirilecek yazılım Windows platformunda çalışmayacak olsa bile servis mimarili uygulamalarda Windows sunucu üzerinde çalışan SQL Server üzerinden XML, WCF, Web Servis ya da diğer servis ve veri transferi gerçekleştirmeyi sağlayan teknolojilerle Linux ya da bir başka işletim sistemi üzerinde çalışacak herhangi bir yazılıma veri yönetimi yetenekleri kazandırılabilir.

Bu kitap, SQL Server’ın yönetimsel derinliklerine kısmi olarak değinmekle birlikte, SQL Server DBA için gerekli programsal konulara da değinmektedir. Ayrıca yazılım geliştiricilere yönelik temelden, ileri seviyeye doğru, bol örnek ve uygulama ile tüm SQL Server programlama alanlarını kapsamaktadır.

Bu kitaptan daha fazla faydalanmak için veritabanı mimarisi, SQL sorgu dili, herhangi bir programlama dili ya da bir veritabanı yönetim sistemi üzerinde temel seviye bilgi sahibi olunması kitabı daha iyi kavramınız açısından faydalı olacaktır. Ancak teorik programlama bilgisi olan okurlar, SQL bilgisine sahip olmasalar dahi, kitaptaki temel SQL konularıyla veritabanı programlama mantığını kavrayabilirler.

Kitapta yer alan başlıca konu başlıkları şunlardır: 

·        Microsoft SQL Server’a Genel Bakış
·        T-SQL’e Genel Bakış
·        Verileri Sorgulamak
·        Veri Bütünlüğü
·        İleri Seviye Sorgulama
·        Geçici Veriler ile Çalışmak
·        Indeks’ler ile Çalışmak
·        Prosedürel Yapılar
·        View’ler ile Çalışmak
·        Stored Procedure’ler
·        Kullanıcı Tanımlı Fonksiyonlar
·        Hata Yönetimi
·        SQL Cursor’ları
·        Dinamik T-SQL
·        SQL Server ile XML
·        Transaction ve Kilitler
·        Trigger’lar
·        Sorgu ve Erişim Güvenliği
·        Performans ve Sorgu Optimizasyonu
·        Yedeklemek ve Yedekten Dönmek
·        SQL Server Management Objects’i Kullanmak

Bölümlerin kısaca özetleri ise şöyledir:

1.Bölüm: Microsoft SQL Server’a Genel Bakış

Veritabanı programlamaya başlamadan önce öğrenilmesi gereken konu, neyin programlanacağıdır. Veritabanı kavramı, ilişkisel veritabanı yönetim sistemleri nedir ve SQL Server bunların neresindedir sorularının cevabını bu bölümde bulabileceksiniz. Veritabanı ile SQL Server’ın ne olduğunu öğrendikten sonra, veritabanı programlama, SQL ve T-SQL ifadelerinin anlamını öğrenerek kitapta gerçek anlamda ne öğretilmek istendiğinin farkına varacaksınız.

SQL Server araçları, kurulum ve konfigürasyon seçenekleri, lisanslama modellerini de öğreneceğiniz bu bölümde, veritabanı ve SQL Server’ın mimari temellerinden sonra, mantıksal SQL Server veritabanı nesnelerini de sırasıyla inceleyeceğiz.

2.Bölüm: T-SQL’e Genel Bakış

Bu bölüm ile birlikte, artık veritabanı programlama dünyasına ilk adımları atacağız. SQL ve T-SQL dillerinin en temel söz dizimleri olan, veri işlemleri için SELECT, INSERT, UPDATE, DELETE, nesne işlemleri için de CREATE, ALTER,DROP ifadelerini örneklerle ve teorik tüm detaylarıyla inceleyeceğiz. Bir veritabanı oluşturmak için hangi özellikler gereklidir. Bu özelliklerin anlamları ve ne için kullanıldıkları, bir veritabanının SQL ile nasıl oluşturulduğu, değiştirildiği ve sunucudan nasıl silindiği gibi konuları inceleyeceğiz. Ayrıca, veri üzerinde seçme, ekleme, güncelleme ve silme işlemlerini gerçekleştirmek için kullanılan SELECT, INSERT, UPDATE ve DELETE ifadelerini de temel olarak inceleyeceğiz. Kitabın ilerleyen bölümlerinde bu veri işleme ifadelerini daha gelişmiş ve karmaşık sorgular ile kullanacağız.

SQL ve T-SQL programlamaya yeni başlayan ya da bu kitap ile başlayacak olan öğrenciler için bu bölümü kavramak önemlidir. Veritabanı programlama için gerekli en temel sorgu dili kullanımları bu bölümde yer almaktadır.

3.Bölüm: Verileri Sorgulamak

Veritabanı programlamada en çok kullanılacak sorgu yapıları, şüphesiz SELECT ifadesiyle oluşturulan veri seçme sorgularıdır. Bir çok farklı durumda, karmaşık veri seçme sorguları oluşturulabilir. Veriyi filtrelemek belirli koşullardaki kayıtları elde etmek, NULL veriyi görmezden gelmek, veri üzerine aralık sorgulaması yapmak, operatörler ve sorgular sonucunda birden fazla tablodan dönecek kayıtları birleştirmek için kullanılan JOIN sorgu yapılarını ele alacağız.

3. bölümde SQL ve T-SQL konularında öğrendiğiniz bilgilerin üzerine, veri sorgulama yöntemlerini ekleyerek başlangıç seviyede bir SQL geliştirici bilgisine sahip olacaksınız.

4.Bölüm: Veri Bütünlüğü

Veri ekleme işlemlerinin kontrolsüz yapılması ve veritabanına eklenecek verinin denetlenmemesi, veritabanının bütünlüğünü, yani veri doğrusallığını olumsuz yönde etkiler. Verinin belirli format ve şartlara göre veritabanına eklenmesiyle bir çok sorun, daha başlamadan çözülmüş olur. Bu bölümde, veri bütünlüğü kavramını ve bunun için gerekli veritabanı nesneleri olan Constraint’leri, Rule ve Default nesnelerini inceleyeceğiz.

5.Bölüm: İleri Seviye Sorgulama

Bu bölüme kadar öğrenilen temel ve orta seviye SQL konularını bir seviye daha ilerleterek, profesyonel veritabanlarında kullanılan bir çok sorgu tekniğini inceleyeceğiz.

Bu bölümde tüm detaylarıyla inceleyeceğimiz konulardan bazıları;

•          Alt sorgular
•          İlişkili alt sorgular
•          Türetilmiş tablolar
•          EXISTS ve NOT EXISTS
•          Common Table Expressions (CTE),
•          Rütbeleme fonksiyonları
•          PIVOT ve UNPIVOT operatörleri
•          TUNCATE TABLE
•          İleri veri yönetim teknikleri
•          Dosyaların (video, resim vb.) veritabanına eklenmesi ve güncellenmesi
•          FILESTREAM ile veri seçme, ekleme, güncelleme, silme işlemleri
•          Verileri gruplamak ve özetlemek
•          Gruplama fonksiyonları

Bu ana konular ile, bunlara bağlı bir çok ara konuyu detaylı örnekleriyle inceliyor olacağız.

6.Bölüm: Geçici Veriler İle Çalışmak

SQL Server’da geçici veri kavramı birden farklı şekilde anlaşılabilir. Bu bölümde kastettiğimiz geçici veri, tarih ve para birimi işlemleri gibi, anlık olarak işlenen verilerdir. Bir tarih verisi üzerinden ülke, dil ve diğer SQL Server ayarlarına bağlı olmak üzere, birçok farklı formatta veri çıktısı alınabilir. Aynı şekilde, birden fazla para birimini destekleyen veritabanı tasarımlarında, para birimi ve bu birimlerin dönüştürülmesi, sorgulanarak farklı birimler ile birleştirilmesi gibi işlemler geçici veri olarak nitelendirilebilir.

Geçici veriler için SQL Server’da bol miktarda hassas veri tipi ve fonksiyon yer alır. Bu bölümde, tüm veri tiplerinin detaylarını örneklerle birlikte inceleyeceğiz. Fonksiyonların kullanımını inceleyeceğimiz gibi, veri tipleri arasındaki farklılıkları da gözlemleyeceğiz.

7.Bölüm: İndekslerle Çalışmak

İndeksleri kavramak için, öncelikle SQL Server’ın veri depolama mimarisi hakkında bilgi sahibi olunmalıdır. Bu bölümde, SQL Server depolama mimarisini inceledikten sonra, sorgu optimizasyonunu sağlamak için kullanılan indekslerin türleri ve indekslerin oluşturularak yönetilmesi, indeksler hakkında sistemden bilgi almak gibi konuları inceleyeceğiz.

8.Bölüm: Prosedürel Yapılar

Daha önceki bölümlerde bir çok T-SQL nesne ve ifadesi öğrenmenize rağmen, gerçek anlamda T-SQL programlamanın özelliklerinden önemli bir kısmını bu bölümde inceleyeceğiz. Script ve Batch kavramını inceleyeceğimiz bu bölümde, değişken tanımlama, değişkenlere değer atama, USE ve GO komutları, SQLCMD aracının kullanımı, tüm programlama dillerinde vazgeçilmez olan akış kontrol ifadeleri (IF ELSE, CASE, WHILE vs.) gibi önemli T-SQL konularını örneklerle inceleyeceğiz.

9.Bölüm: Vıew’lerle Çalışmak

View’ler, basit ya da karmaşık sorgular için sanal tablo görevini yerine getirirler. Bu bölümde, view’ler hakkında bilgi almak, view oluşturmak, değiştirmek, silmek, schema binding, view şifreleme, view üzerinden ilişkili tablolara veri ekleme, güncelleme ve silme işlemi yapma gibi view yönetim işlemlerini ele alacağız.

Ayrıca, indekslenmiş view’ler, parçalı view kullanımı gibi konulara da değineceğiz. View’ler genel olarak karmaşıkJOIN’li sorgu yapılarını daha basit söz dizimi halinde tekrar tekrar kullanmak için oluşturulurlar. Bu nedenle, bu bölümden önceki konuların iyi kavranması gerekir.

10.Bölüm: Stored Procedure’ler

SQL Server’da performans ve güvenlik olarak çok tercih edilecek özel bir nesnedir. Dışarıdan parametre alarak, programsal, çok karmaşık olmayan işleri gerçekleştirmek için kullanılırlar. Stored procedure’ler, sorgu planı ve ayrıştırma işlemi daha önceden hazırlanan nesneler olduğu için, performans açısından sorgu hızını artırıcı özelliğe sahiptir.

Bu bölümde, stored procedure oluşturma, sistemdeki prosedürler hakkında bilgi almak, bu nesneler için gerekli izin ve roller, kısıtlamalar, prosedürlerin değiştirilmesi, çağrılması, şifrelenmesi ve silinmesi gibi daha bir çok stored procedure konusunu inceleyeceğiz.

11.Bölüm: Kullanıcı Tanımlı Fonksiyonlar

Veritabanı programlamada, stored procedure’ler kadar önemli olan diğer bir nesne de, kullanıcı tanımlı fonksiyonlardır. Kısaca KTF olarak isimlendireceğimiz bu nesne, dışarıdan parametre alabildiği gibi, dışarıya parametre de gönderebilmektedir. İçerisinde karmaşık T-SQL işlemleri gerçekleştirebilir. Gerçek anlamda bir program parçası-fonksiyonu olarak çalışır.

Bu bölümde, KTF oluşturma, farklı KTF türleri ve kullanımları, KTF şifreleme, silme gibi işlemlerle birlikte CROSSAPPLY ve OUTER APPLY operatörlerinin de KTF ile birlikte kullanımını inceleyeceğiz.

12.Bölüm: Hata Yönetimi

Tüm programlama dillerinde olması kaçınılmaz sorun, yazılım ya da işlem sırasında meydana gelen hatalardır. Bilgisayar teknolojilerinde hata olması kaçınılmazdır. Ancak hatanın, çalışan programı çalışamaz hale getirmemesi için izole edilmesi gerekir. İzole edilen hatanın yerine farklı bir işlem yapılabileceği gibi, aynı işlem tekrar gerçekleştirilmek istenebilir ya da hata olana kadar gerçekleşen işlemler geri alınabilir.

Bu bölümde, hata mesajları hakkında bilgi almak, yeni mesaj eklemek, hata fırlatmak, THROW, RAISERROR gibi konuları ele alacağız. Aynı zamanda, T-SQL programları içerisinde, hata yönetimini kolaylaştırmak ve daha yönetilebilir hale getirmek için T-SQL diline eklenen TRY-CATCH ile hata kontrolünü de inceleyeceğiz.

13.Bölüm: SQL Cursor’ları

Bu bölümde, kayıtlar üzerinde gezinmek için kullanılan cursor’ları inceleyeceğiz. Bir cursor’ın ömrü, nerelerde kullanıldığı, cursor tipleri, özellikleri, cursor’ların nasıl oluşturulduğu ve cursor’lar ile satırlar üzerinde ileri-geri dolaşmak için gerekli ifadeleri inceleyeceğiz.

Cursor’lar, alternatifi olmakla birlikte, bazen kullanmak kaçınılmaz olabilir. Yapısal olarak karmaşık gibi görünen, kullanımı zor ve tecrübe isteyen bir konudur. Bu nedenle kitapta cursor’ları ayrı bir bölüm olarak ele aldık.

14.Bölüm: Dinamik T-SQL

Veritabanı programlarında bazen sorguya gelecek verinin değeri çalışma anında belirlenebilir. Bu tür durumlarda dinamik sorgular geliştirilmesi gerekir. Bu bölümde, dinamik sorgu tekniklerini, EXEC ve sp_ExecuteSQL ile dinamik sorgu oluşturma yöntemlerini inceleyerek, çeşitli örnekler geliştireceğiz.

15.Bölüm: SQL Server ile XML

SQL Server tarafından native olarak desteklenen XML veri tiplerini kullanarak, XML formatındaki verinin SQL Server içerisine aktarılması, veritabanındaki verinin XML formatıyla sunucu dışına aktarılması gibi işlemler gerçekleştirilebilir.

Bu bölümde, XML veri yönetimini gerçekleştirme, XML şema koleksiyonları oluşturma ve yönetme işleminin yanı sıra, XML nesne ve veriler hakkında bilgi alma konularını da inceleyeceğiz.

XML veri üzerinde sorgulama işlemleri gerçekleştirmek için aşağıdaki XML metodlarını inceleyeceğiz.

•          xml.query
•          xml.exist
•          xml.value
•          xml.nodes
•          xml.modify
•          delete
•          replace value of

XML biçimindeki ilişkisel veriye erişmek için, FOR XML ve OPEN XML ifadelerini, SQL Server’ı uzak sunucu olarak kullanarak, XML formatıyla veri erişimini sağlamak için ise, HTTP Endpoint’leri inceleyeceğiz.

16.Bölüm: Transactıon & Kilitler

Transaction ve kilit kavramı, bir veritabanı sunucusu için, ileri seviye yönetim gerektiren konulardır. Bu bölümde, transaction oluşturma, kayıt noktası oluşturma, iç içe transaction’lar, Xact_State fonksiyonu ve transaction’lar içerisinde hata yakalama mekanizması oluşturma gibi konuları inceledikten sonra, tamamlayıcı bölüm olarak da kilitlere giriş yapacağız.

Kilit türleri, kilitlerin T-SQL ile yönetilmesi, izolasyon seviyesinin ayarlanması ve yönetimi gibi kavramları bu bölümde inceleyeceğiz.

17.Bölüm: Trıgger’lar

Veritabanı ya da sunucuda, bir olay sonucunda otomatik olarak tetiklenen nesnelerdir. Bu bölümde, DML işlemlerinde gerçekleşen INSERT, UPDATE, DELETE işlemlerine özel trigger’lar oluşturmayı ve yönetmenin yanı sıra, INSTEADOF Trigger’lar oluşturmayı ve yönetmeyi de inceleyeceğiz. Veritabanı katmanında DML Trigger’ları inceledikten sonra ise, sunucu katmanında DDL trigger oluşturmayı ve yönetmeyi inceleyeceğiz.

18.Bölüm: Sorgu ve Erişim Güvenliği

Veritabanının güvenliği, içerdiği verinin değeriyle doğru orantılıdır. Önemli ve değerli olan her şey korunmalıdır. Günümüzde en değerli ve özel kaynak verinin kendisidir.

SQL Server’da güvenliği sağlamak için temel olarak dört ayrı katman vardır. Bunlar;

•          Sunucu işletim sisteminin ve sunucunun bulunduğu bilgisayar ağının güvenliği
•          Veritabanı sunucusunun güvenliği
•          Veritabanı yazılımının güvenliği
•          Veritabanına bağlantı yetkisi olan istemci uygulamaların güvenliği

Bu bölümde, dört aşamalı güvenlik katmanını inceliyor olacağız. Yazılımsal olarak, SQL Injection gibi SQL kodları arasına kod enjekte etme saldırılarına özel bir yer ayırarak derinlemesine inceleyeceğiz. Daha sonra ise SQL Server’ın güvenlik için oluşturulan nesne ve ayarlarını inceleyeceğiz. Erişim Güvenliği bölümünde oturumlar, nesne izinleri, kullanıcılar, izinler ve rolleri inceleyip yöneteceğiz.

19.Bölüm: Performans ve Sorgu Optimizasyonu

Aslında bu kitaptaki her bir bölüm için ayrı bir kitap yazılabilirdi. Bu bölüm de, bilgi ve anlatımda sınır olmayacak kadar geniş bir kavramı temsil eder. Performans, tek bir alanı kapsamaz. Veritabanının ilişkili olduğu her şeyin toplamına denk bir kapsama sahiptir. Veritabanının bulunduğu sunucunun tüm donanımlarından, internet alt yapısına, istemcilerin performansından, veritabanı tasarımı ve SQL sorgularına kadar, hatta daha da fazla, bağlantılı performans parçasına sahiptir.

Bu bölümde, performans kavramını yazılım geliştirici açısından inceleyeceğiz. Ancak bazı konular ise, hem yazılımcı hem de veritabanı yöneticisi açısından gerekli olan kavramları içermektedir.

20.Bölüm: Yedeklemek ve Yedekten Dönmek

Yedekleme işlemleri genel olarak veritabanı yöneticisinin görevidir. Bir sistemin veri yedeklerinin planlanması ve yedeklemenin gerçekleştirilmesi, genel olarak veritabanı yöneticisi tarafından yapılır. Tabi ki, her yazılımcı aynı zamanda bir veritabanı yöneticisi adayıdır. Veritabanı yöneticileri de veritabanı geliştirme tarafında uzun zaman tecrübe edinmiş kişilerden oluşmaktadır.

Bu nedenle, bir veritabanı programcısının da iş hayatında sıklıkla kullanması gereken veritabanı yedekleme bölümüne bu kitapta yer verdik.

21.Bölüm: SQL Server Management Objects’i Kullanmak

Veritabanı programcısı ve yöneticisinin ortak kullandığı teknolojilerden biri de SMO’dur. Kısaca söylemek gerekirse, SMO ile kendi Management Studio editörünüzü geliştirebilirsiniz. Bir veritabanı ve sunucunun geliştirme ve yönetim için gerekli nesne modellerine sahiptir. SMO bir nesne modelidir ve .NET programlama dilleriyle geliştirilebilir. Bu durumda, hem yazılımcı hem de veritabanı yöneticisi açısından karşılaşılabilecek bir teknolojidir diyebiliriz.

Bu bölümde, SMO uygulamalarına, neredeyse hiç bir kitapta bulamayacağınız kadar fazla yer verdik. Bir çok veritabanı nesnesi ve işleminin SMO ile nasıl geliştirilebileceğini örnek uygulamalar ile inceledik.

22 – ADO.NET ile Veritabanı Uygulaması Geliştirmek (2. Baskıda)

Herhangi bir programlama dili ve veritabanı kullanılarak geliştirilen ticari ya da ticari olmayan yazılım uygulamalarına genel olarak ‘veritabanı uygulaması’ denir. Bu bölümde, SQL Server ve veritabanı programlama dili olan T-SQL’in, C# programlama diliyle geliştirilen bir uygulamayla nasıl etkileşime geçebileceğini inceliyoruz.

ADO.NET çok detaylı ve uzmanlık gerektiren bir yazılım uzmanlığı konusudur. Bu nedenle kitabımızda giriş niteliğinde anlatılmaktadır.

Not : Yazarın kişisel bloğu(www.cihanozhan.com) üzerinden, ADO.NET, LINQ ve Entity Framework gibi ileri seviye ADO.NET konularının detaylı anlatıldığı video eğitimlere ulaşabilirsiniz.