Ana içeriğe atla

Kayıtlar

SQL Server T-SQL etiketine sahip yayınlar gösteriliyor

TSQL – Dış Kaynaklarla Çalışma (XML bağlantı)

SQL sunucuda veri tabanı sorguladığımız gibi dış kaynaklardan, veri dosyalarını sorgulamamız mümkündür. Dış kaynaklara bağlantı için, tüm bağlantı bilgilerini OLE DB içinde barındırır. Aynı veri kaynağına sürekli bağlantı için SQL’in Linked Server özelliği kullanılmalıdır. OPENROWSET işlevini bir tablo sorgular gibi kullanabiliriz. OLE DB sağlayıcısının yetenekleri doğrultusunda insert, update ve delete komutlarıyla birlikte de kullanılabilir. OPENROWSET komutunun Bulk veri okuma için de desteği vardır. Sistemin lokalindeki bir xml’e bağlantı kurulacaksa yine lokaldeki SQL servisinden login olunmalıdır. Veri dosyalarıyla bağlantı kurabilmek için SQL servisinin Ad Hoc Distributed Queries özelliğinin açılması gereklidir.   sp_configure 'show advanced options' , 1 reconfigure with override go sp_configure 'Ad Hoc Distributed Queries' , 1 reconfigure with override GO XML dosyası okumak için Ornek.XML Dosyası: <?xml version="1.0" ?> < Kok ...

Heap, Clustered İndeks ve Nonclustered İndeks Data Yapıları - Bölüm 3 (Nonclustered İndeks Mimarisi)

4. Nonclustered İndeks Mimarisi Nonclustered indeks aşağıdaki farklılıklar dışında B-tree yapısını clustered indeks gibi kullanır: · Tablodaki data satırları, nonclustered anahtarlarına göre sıralanıp depolanmaz. · Nonclustered indeksin leaf katmanı data page yerine indeks pagelerle düzenlenir. Nonclustered indeksler tablo veya view üzerine heap veya clustered indekslerle tanımlanabilirler. Nonclustered indekste her indeks satırı, nonclustered indeks key value ve bir row locator bulundurur. Bu yer bulucu, clustered indeks veya heapteki anahtar değerine sahip satırı işaret eder. Nonclustered indeksteki satır bulucu, ya bir satır göstergesidir ya da satırın clustered indeks anahtarıdır. Buna göre: Tablo clustered indeks içermeyen bir heap ise; row locator bir satırı işaret eder. Bu pointer, dosya tanıtıcı (ID), sayfa numarası ve page üzerindeki satırların numaralarından oluşur. Bütün olarak bu pointer Row ID (RID) olarak tanımlanır. Eğer tablo bir clustered indekse sahipse veya ...

Heap, Clustered İndeks ve Nonclustered İndeks Data Yapıları - Bölüm 2(Clustered İndeks Mimarisi)

3. Clustered İndeks Mimarisi SQL Server’da, indeksler B tree içinde düzenlenirler. B treedeki indeks içindeki her page index node olarak adlandırılır. B-treenin en tepedeki nodu root node olarak adlandırılır. İndeksin en alt seviyesindeki nodlar leaf node olarak adlandırılır. Root ve leaf nodlar arasındaki herhangi bir indeks seviyesi ortak olarak intermediate seviyededir. Clustered indekste leaf nodelar tablo altındaki data pageleri içerirler. Root ve ara seviyedeki nodlar indeks satırlarını tutan indeks pageleri içerirler. Her indeks satırı bir anahtar değeri ve ara seviye sayfa göstergesi veya leaf level data row göstergesi içerir. Her seviye içindeki pageler doubly-linked list içinde bağlıdırlar. Veri zincirindeki pageler ve onun içindeki satırlar clustered indeks anahtar değerine göre sıralanır. Tüm INSERT işlemleri, diğer satırların arasında anahtar değerine uygun satıra yapılır. B-tree için page collectionlar, sys.system_internals_allocation_units’ deki page pointerlar tara...

SQL Server Reporting Services (SSRS) Nedir?

SQL Server Reporting Services, Microsoft tarafından üretilen, SQL Server’in bir bileşeni olarak gelen bir rapor üretim aracıdır. Masaüstü ve web uygulamalarda tasarımcı tarafından belirli bir formatta şeması oluşturulmuş raporları veri seti ile bağlayarak görsel hale getirir. Görüntülenmekte olan raporlar pdf, word, excel, csv, xml, jpg gibi formatlara dönüştürülerek aktarılabilirler. SQL Server Reporting Services’in diğer birçok rapor oluşturucu ve görüntüleyeci araçlara göre en önemli farkı, raporların hazırlık işlemlerinin istemcilerde değil, rapor servisinin kurulu olduğu sunucuda yapılmasıdır. SSRS Bileşenleri 1. Veritabanı SQL Server, Oracle veya ODBC bağlantısı desteklenen herhangi bir veritabanı olabilir. 2. Rapor Sunucusu Bu sunucuda RDL uzantılı rapor tanım dosyaları bulunmaktadır. XML formatındaki bu dosyalar, rapor görünüm formatını, veritabanı bağlantı bilgisini ve veri çekmek için gereken sorguyu içermektedir. 3. Rapor Servisi Rapor sunucusundaki RDL dosy...

SQL Server 2008 R2 Hakkında Az Bilinen 10 Özellik

SQL Server 2008 R2 sürümü daha çok İş Zekası (BI) konusundaki yenilikleri ile bilinir. Ancak bu sürümle gelen yenilikler bununla sınırlı değildir. Şimdi bu az bilinen 10 özelliğe kısaca göz atalım. 1. SQL Server Express Veritabanı Boyutunda Artış Pek çok kullanıcının ücretsiz SQL Server Express versiyonundan uzak durmasının bir sebebi, bu versiyonun desteklediği maksimum veritabanı boyutu idi. Yeni sürümle bu limit %150 arttırılarak 4GB’tan 10GB’a yükseltildi. Bu artış daha önce çalışmayan pek çok uygulamanın SQL Server Express ile çalışmasını sağlayacak ve ücretli versiyonlara bir alternatif olmayı sürdürecek. 2. Genişletilmiş Güvenlik SQL Server 2008 R2’nin Genişletilmiş Güvenlik (Extended Protection) özelliği, service binding ve channel binding kullanarak authenticatin relay tipi saldırılara karşı güvenlik sağlamaktadır. Service binding özelliği daha fazla sunucu kaynağı gerektirdiğinden, seçilecek güvenlik yöntemi CPU üzerindeki yüke göre belirlenmelidir. Genişletilmiş Güve...

SMO (SQL Server Management Objects) Nedir?

SMO, Microsoft SQL sunucularını uzaktan yönetmek için tasarlanmış objelerdir. SMO kütüphanesini pojemize referans olarak ekleyerek SSMS (SQL Server Management Studio) ile yapabileceğimiz çoğu işlemi uygulamamızdan yapabiliriz. SMO, Distributed Management Objects(SQL-DMO) yerine gelmiştir. SMO, SQL-DMO’ ya göre daha performanslı ve kolay kullanımlıdır. SMO çoğu SQL-DMO işlevselliğini içerir, yeni sınıflarlada SQL server yeniliklerini destekler. SQL-DMO bir COM objesidir, SMO ise bir .NET bileşenidir. SMO, SQL Server 2000, SQL Server 2005 ve SQL Server 2008 sürümlerini destekler. SQL Server 2000 öncesi versiyonları desteklememektedir. SMO sınıfları iki türlüdür: Instance sınıfları ve Utility sınıfları. Instance sınıfları sunucular, veritabanları, tablolar, triggerlar ve prosedüreler gibi SQL objelerini ifade eder. Veritabanı sunucusunun hiyerarşisini ifade eden bir yapısı vardır. Utility sınıfları belirli işlemleri gerçekleştiren objelerdir. Veritabanı şemasını veya datayı başka verita...

SQL Server Tetikleyicileri Üzerine (Triggerlar)

SQL Server’da tablo veya görünümlerde(view) herhangi bir işlem çalıştırıldığında (DELETE, INSERT, UPDATE) başka işlemlerin de yapılması isteniyor ise tetikleyiciler kullanılır. Her ne kadar Univera bünyesinde geliştirilen yazılımlarda DML mantığında çalışan tetikleyicileri kullanmasak da (Entity Framework doğasına aykırdır, tartışma konusudur); loglama, veri tutarsızlığı vb. işler için yararlı olduklarını söylemek mümkündür. Tetikleyiciler SQL cümleleri ile oluşturulur. Tetikleyici oluşturmak için aşağıdaki sözdizimi kullanılır. CREATE TRIGGER [şema adı.] triggerAdı On tablo_adı | görünüm_ adı [WITH dml_tetikleyici_seçeneği] { For | AFTER | INSTEAD OF } {[INSERT], [,],[UPDATE ],[,],[DELETE] } [WITH APPEND] } AS sql ifadesi | EXTERNAL NAME method adı SQL serverda 2 tür tetikleyici bulunmaktadır. Bunlar AFTER ve INSTEAD OF tetikleyicileridir. AFTER (Ardı Sıra Tetikleyiciler): İşlem gerçekleştikten sonra tetiklenirler. Veritaban...

SQL Sorgu Optimizasyonuna Yardımcı Araçlar

Sorgu optimizasyonu yaparken, her değişiklikten sonra performans bilgisini gözlemleme işlemini tekrarlamak gerekir. Bu gözlem, yapılan değişikliğin performansı iyi mi kötü etkilediğini belirlemeye yardımcı olur. 1. Elapsed Time Bir sorgunun çalışmak için aldığı zaman uzunluğu ‘Elapsed Time’ olarak adlandırılır. Sorgunun tamamlanma süresini birçok şey etkileyebilir. Tamamlanma süresi en iyi değerlendirme ölçüsüdür, çünkü bu değere kullanıcının sorgu çalışırken bekleyeceği zamandır. Tamamlanma süresini görebileceğimiz ilk yer SQL Server Management Studio’ da sorgu penceresidir. Aşağıdaki gibi görülür. Tamamlanma süresini görebileceğimiz diğer seçenek SET STATISTICS komutunu kullanmaktır. Aşağıda bu komut ile çalıştırılmış sorgu ve sonuç penceresi görünüyor.  

JOIN Türüne Göre SQL Optimizer Çalışma Mantığı

SQL Optimizer, Joinler için 3 farklı yöntem kullanmaktadır: 1. Nested Loop : Bir tablonun (outer table) tüm satırlarını döner ve her satır için diğer tablonun(inner table) satırlarını dönerek eşleştirmeye çalışır. Kayıt sayıları az olduğunda en iyi performansı verir. Right ve Full Outer Join bu yöntemi kullanmaz. Input tablonun büyüklüğü çarpı Output tablonun büyüklüğü maliyetle orantılıdır. Algoritma mantığı aşağıdaki gibidir: for each row R1 in the outer table     for each row R2 in the inner table         if R1 joins with R2             return (R1, R2) 2. Merge Join : Aynı anda iki tablonun birer satırını okuyup karşılaştırarak eş zamanlı çalışır. Ancak iki tablonun join keylerinin sıralı olması zorunludur. “T1.a = T2.b” şeklinde bağlandıysa t1 in a, t2 nin de b kolonuna göre sıralı olması gerekmektedir. Tüm join tiplerini destekler. Kayıt sayısıyla m...

OPENXML ile SQL Veritabanında XML Verilerinin İşlenmesi

OPENXML, bir XML belgesi için bize bir rowset görünümü sunarak, Sql Server’da XML verilerinin parse edilebilmesini sağlamaktadır. Parse sonrasında, bu verileri sql sorgularımızda kolaylıkla kullanmamız mümkündür. Özetle; XML içerisindeki verilerin tıpkı veritabanı tablolarındaki satırlar ve sütunlar gibi davranmasını sağlamış oluyoruz. OPENXML fonksiyonu “sp_xml_preparedocument” sistem stored procedure’ü ile birlikte kullanılmaktadır. Bu prosedür, verilen xml içerisindeki düğümlerin ağaç şeklindeki görünümünü bellek üzerinde oluşturur ve bu çıktı OPENXML fonkiyonu için girdi olarak kullanılır. Bu işlem sırasında  kullanmak isteğimiz XML elementlerine ilişkin derinliği yani XPATH’i belirtmemiz gerekmektedir. OPENXML komutunun avantaj ve dezavantajları aşağıdaki gibidir; Avantajları: Openxml ile xml’den verileri işlemek hızlıdır. XML belgelerini stored procedurelerde datasource olarak kullanmak içinde oldukça kullanışlıdır.

SQL Server 2008 Yenilikler – Bölüm 3 (Loglama/CDC)

Bir önceki yazımızda, SQL Server 2008 ile gelen Auditing ile loglama mantığını anlatmıştık. Bu yazımızda, diğer bir loglama özelliği olan CDC (Change Data Capture)’den bahsedeceğiz. CDC özelliği ile row bazında yapılan tüm işlemler tarihsel bilgilerle saklanabilmektedir. Yani hangi kayıtlar üzerinde hangi tarihler arasında ne gibi işlemler yapıldığı raporlanabilir. Tüm CDC işlemleri T-SQL komutları ile yapılır. Şekil 1. CDC akışı 1.   Database seviyesinde CDC nin açılması Exec sys . sp_cdc_enable_db 2.   İstenilen tablo için CDC nin aktif hale getirilmesi EXEC sp_cdc_enable_table 'dbo' , 'TBLILCE' , @role_name = NULL, @supports_net_changes = 1 Tablo için CDC aktif hale getirilince, tablo yapısıyla aynı olan ve ilave olarak 5 tane sahanın eklendiği yeni bir tablo yaratılır. Tüm DML işlemlerinde (Insert, update, delete) buraya yeni bir kayıt atılır. Yeni açılan tablonun isimlendirmesi şu şekildedir. cdc . dbo_<TABLOADI>_CT Örnek: TBLILCE tablosu içi...

SQL Server 2008 Yenilikler - Bölüm 2 (Loglama / Auditing)

Daha önceki yazılarımızda, SQL Server 2008 özellikleri ile ilgili özet bilgiler vermiştik ( SQL Server 2008'e Geçmek için 10 Neden , SQL SERVER 2008 YENİLİKLER – Bölüm 1 ). SQL Server 2008 ile gelen güçlü özelliklerinden birisi de loglama altyapısıdır. SQL Server 2008’de temel 3 tane loglama özelliği bulunmaktadır; Auditing Change Data Capture (CDC) Data Tracking (DT) Not: Bu alternatiflerden  DT tabloda versiyon bazında yapılan değişiklikleri tutma, online/offline uygulamalarda değişen kayıtları senkronize etme amacıyla kullanılmaktadır. Bu yazımızda, Auditing özelliğine değineceğiz. SQL Server 2008 ile gelen Auditing altyapısı sayesinde, sunucu ve veritabanı seviyesinde yapılan her türlü işlemin logunun tutulup raporlanabilmesi sağlanmıştır. Sadece kayıt seviyesinde değil metadata seviyesinde yapılan işlemler de loglanabilir. SQL Server 2008’de audit oluşturma adımlarının genel şeması aşağıdaki gibidir;   Şekil 1. SQL Server 2008 Auditing

SQL Server 2008’e Geçmek için 10 Neden

10. SSSM için Plug-In Model: SSMS-2005 te de plug-in modul vardı ancak yayımlanmadı. 2008 için, plug-in yayımlanacak ve binlerce ek-modül geliştirilecek. 9. Inline variable assignment: DECLARE @myVar int SET @myVar = 5 yerine DECLARE @myVar int = 5 8. C like math syntax: SET @i += 5 7. Auditing: SQL server Instance veya bir SQL veritabanı defterleri kontrol etme, sistemde meydana gelen olayları izleme ve günlüğe kaydetme işlemlerini kapsamlı ve basitleştirilmiş olarak sağlar. SQL server Audit server ve database üzerinde audit yaratma, saklama ve görüntüleme işlemleri araçlar sağlar. Bu işlemler DDL komutları veya SSMS araçları ile yapılabilir. 6. Compression: Bu özellik, çoğu zaman bir artı olarak düşünülse de aslında göründüğü gibi değildir. Yeni versiyon, bize row-compression ve page-compression özelliklerini sunar. Sıkıştırma çoğunlukla, metadatada yer alır. Değişken uzunluk alanların metadata bilgisi bitlerin içine depolanır(Byte yerine). Verilen bilgiler boşluk ta...

SQL SERVER 2008 YENİLİKLER – Bölüm 1

Bu makalemizde SQL Server 2008 ile gelen bazı yenilikleri aşağıdaki başlıklarda inceleyeceğiz ve kısa bilgiler vereceğiz, detaylarına önümüzdeki makalelerde devam edeceğiz; Yeni Data Tipleri Database Encryption Modeli Compression Modeli Backup Compression 1. Yeni Data Tipleri - FILESTREAM Yapısal olmayan büyük nesneleri(BLOB – Binary Large Objects) depolama problemlerini çözmek için geliştirilmiş bir data tipidir. Veriler NTFS dosya sistemi ile depolanır. - DATE and TIME DATE tipi gün ay yıl bilgisi tutarak sadece tarih bilgisi barındırır. YYYY-MM-DD formatında saklar ve 0001-01-01 ile 9999-12-31 arasındaki değerleri alabilir. TIME tipi SQL Server 2008 Saliseyi 7 digitlik hassasiyette tutuyor. SQL Server 2005 te DATETIME ile bunu 3 digit olarak alırdık. Alabileceği değerler 00:00:00.0000000 ile 23:59:59.9999999 arasındadır. - DATETIME2 and DATETIMEOFFSET DATETIME2 tipinin SQL Server 2005 te kullandığımız DATETIME dan iki farkı var. Bunlar salise hanesinin 7 digit hassasiyeti...