SQL Server Genel Bakış
Instances: aynı SQL veritabanlarını paralel olarak çalıştırabiliriz. Bir Database Engine Instance’ı bir işletim sistemi altında çalışan “sqlserver.exe” uygulamasının bir kopyası demektir. Her Database Engine Instance’ı birkaç sistem veritabanını, bir veya daha fazla kullanıcı da veri tabanını yönetebilir. Her sunucuda Database Engine servisinin birden fazla Instance’ı yani kopyası olabilir. Database Engine default Instance her bilgisayar için bir tane olabilir. Named Instance olarak ise bir çok örnek bulunabilir.
SQL’de oluşturduğumuz bütün veritabanları iki şekilde tutulur.
.mdf: master data file, asıl verinin tutulduğu dosya
.ldf: log data file, yaptığımız işlemlerin tarihçesini tutar.

SQL server yüklenirken bütün özellikleri yüklememize gerek yoktur. Bunun yerine yapacağımız işe göre seçimler yapmak daha doğru olacaktır. Basit bir çalışma için seçilebilecek özellikler:Database Engine Service, Client Tools Connectivity, Client Tools Backwards Compability, Client Tools SDK, SQL Client Connectivity SDK, Master Data Services
SQL server’a bağlanmak için local, 127.0.0.1, . yazarak local’e bağlanılabilir. SQL server configuration manager -> Protocols for MSSQLSERVER altında
shared Memory -> enabled
names pipes -> Disabled → enabled
TCP/IP -> disabled → enabled
ayarlamaları bu şekilde yapmazsak SQL server bağlantımızı tehdit olarak algılayacak ve hata alacağız. Bu ayarlamaları yapıp Windows güvenlik duvarını da devre dışı bırakırsak tehdit olarak algılamayacak ve sorunsuz bir şekilde bağlanabileceğiz. IP ile bağlanırken Windows mode’da hata alınabilir. Bunun için SQL server Authentication modu denenebilir.
Failover Cluster: sistemin datasının tamamen başka yerde kopyasının tutulması. Veritabanı sistemlerinde backup, kurulum, yapılandırma, altyapı gibi faaliyetleri sırasında ortaya çıkan sorunların sistemi etkilememesi ve sistemin sorunsuz bir şekilde devam edebilmesi için kullanılan bir yöntemdir.
Replication Service: SQL Server replikasyonu, verileri ve veritabanı nesnelerini bir veritabanından diğerine kopyalayıp dağıtmak ve ardından verilerin tutarlılığını ve bütünlüğünü sağlamak için veritabanları arasında senkronize etmek için kullanılan bir teknolojidir. Sistemin yoğun olmadığı zamanlarda tek sistemde tutulmaktansa şubelerde tek tek kendi SQL veritabanlarında tutulan veriler uygun zamanda merkeze replicate edilebilir.
Analysis services(OLAP): akan veriye göre geceden sorgu yazıp sabah sorguyu teslim almak zaman kaybını önler. Güncel bilgi sağlanabilir.
DDL(Data Definition Language): TRUNCATE, RENAME, CREATE, ALTER, DROP
DML(Data Manipulation Language): UPDATE, DELETE, MERGE, SELECT, INSERT
DCL(Data Control Language): (yetkilendirme). REVOKE(yetki kaldırır), GRANT(yetki verir)
TCL(Transaction Control Language): SAVEPOINT, ROLLBACK(yaptığınız işlemi geri alabilmek için), COMMIT(yaptığınız işlemi kaydetmek için)
Verinin alındığı(çekildiği) host bilgisayarın saat dilimi önemlidir. SELECT GETDATE() hatalı dönebilir. verinin geldiği saat dilimi ile işlemlerin yapıldığı saat dilimi farklı olması nedeniyle.
SELECT @@IDENTITY son eklenen verinin ID’sini döndürür.(primary key ve incremental identity olan kolon için). Otomatik arttırım yaparsak hatalı INSERT de yapılsa yani veritabanına eklenmese de parametre artacaktır.
Otomatik artan olarak primary key her tabloda olmasını tercih ettiğimiz bir durumdur. İndeksleme için yardımcı olacaktır.
SELECT @@ROWCOUNT yapılan INSERT, DELETE gibi işlemlerde kaç satır üzerine işlem yapıldığını gösterir. Sonuç 0 dönerse yapmak istediğimiz işlem diyelim INSERT olsun başarısız olmuş demektir.
SQL çalışması için önemli olan RAM’in baz hızıdır.(Mhz)
Microsoft access veritabanı yönetim sistemi değildir. Veritabanıdır. SQL server is veritabanı yönetim sistemidir. SQL Server’da SELECT * FROM CUSTOMERS yapıldığı zaman bu işlem kaynak olarak sunucunun kaynaklarını kullanacaktır. Fakat Microsoft Access ile aynı işlem gerçekleştirildiğinde bilgisayarın kendi kaynaklarını kullanacaktır. SQL tüm veritabanlarının ortak dilidir. Sadece kendi aralarında platformlarda özelleştirmeleri mevcuttur. Access, PostgreSQL, MySQL, Oracle gibi.
SQL server gerçek anlamda sunucu üzerinde konumlandırılır. SQL server arkada çalışır. Arayüz olarak Management Studio kullanılabilir.
SQL server evaluation: canlı ortam, 6 aylık
SQL server developer: canlı değil, kendi içinde kullanılabilir.
SQL server express: ücretsiz, 10GB data sınırı, küçük işletmeler için.
OLTP(Online Transactional Processing): Bankalarda bir hesaptan başka bir hesaba para gönderilirken işlem bütünlüğün sağlanması özelliğidir. A kişisinin hesabından çıkan para aynı anda B kişinin hesabına da yansıtılmalıdır. Bu işlemler Arasında gerçekleşen bütün işlemlerin bütünlüğünün sağlanması önemlidir. Buna OLTP denir. SQL bu bütünlüğü sağlar.
SQL Tarihsel Dönüm Noktaları
2000 sürümü dönüm noktalarından biridir çekirdek üzerinde yazılmaya başlandı. Bunun üzerinden geliştirmeler yapılarak günümüze kadar gelmiştir.
2014 yılında tamamen memory’de çalışma özelliği getirildi. Devrim niteliğinde bir gelişmeydi diyebiliriz.
SQL server özellikle JOIN işlemlerinde paralel çalışır. CPU sayısı çok olursa paralel işlemler daha hızlı çalışır. JOIN işlemlerinde her tablo bir CPU kullanır.
clock speed değeri işlemcilerin hızı için önemli bir değerdir.
Yeni veriler geldikçe mevcut indeksler bozulmaya başlar. İşlem hızı düşer. İndeks bozulmasına Fragmantasyon denir. Index Rebuild yapılarak bu sorun çözülebilir. Bu işlem akşamları ya da şirket için uygun olan bir zamanda yapılabilir. Periyodik bakım planı oluşturmak gibi.
Database Snapshot ile anlık veritabanından snapshot alınabilir yani görüntüler alınabilir ve daha sonra istenilen zamanlarda bunlara dönülebilir. Windows Sistem geri yükleme gibi düşünebiliriz.
Bir veritabanının kendi kendini yönetmesi için gereken veritabanları; Master DB, Model DB, MSDB, Temp DB.
Temp DB: geçici işlemlerin, sorguların tutulduğu veritabanıdır. Database Engine Configuration -> Temp DB, Temp DB’nin istenilmeyen şekilde büyümesini engellemek için burada ayarlamalar yapılabilir. Temp DB tablolar session bazlı hafızada tutulur. New Query diyip farklı ekranda #TMP çağırırsak hata alırız. ##TMP yaparsak session bazlı olmaktan çıkar. Temp dosyaları RAM’de tutulan tablolar oldukları için sistem yeniden başlatıldığında yok olurlar. Temp DB dosyalarını sistemden silsek bile SQL server yeniden açılınca otomatik olarak oluşur.
MSDB: SQL server Agent servisinin kullanıldığı veritabanıdır. Periyodik olarak çalıştırılan her türlü işlem(job’lar, schedule’lar, alert’lar) burada tutulur. SQL Server Agent, periyodik olarak belirli zamanlarda çalıştırmak istediğimiz yedekleme, sistem bakımı vb. gibi işlemleri otomatik olarak yapan servistir.
Model DB: her veritabanında bulunması gereken tablolar Model DB altında tanımlanır. Model DB bağlantılı veritabanı eklenirken Model DB’ye bağlı işlem olmaması gerekir. Aksi halde hata alınır.
Master DB: Bir SQL Server için sistem düzeyinde tüm bilgileri saklar. Kritik düzeyde bir veritabanıdır ve yedeklenmesi gerekmektedir.
new database -> options -> Recovery Model ->(full, bulk logged, simple)
full: .ldf verileri veritabanına atılana kadar log file’da kalır. Manuel olarak müdahale edilmedikçe silinmez. Full modelde log’un veritabanına alınması unutulursa dosya aşırı şişebilir. Verilerden daha fazla yer kaplayabilir.
bulk logged: belli önemli işlerden sonra veritabanına alınır ve log’dan silinir.
simple: log’a yazılır işlem yapılınca veritabanına alınır. En çok tercih edilen modeldir.
Daha ayrıntılı bilgi almak isterseniz aşağıdaki yazıyı inceleyebilirsiniz.
Bu bilgiler aslında Turkcell geleceği yazanlar Microsoft SQL Server eğitiminin derslerinden çıkardığım notlardır eğer eğitimi incelemek isterseniz linki aşağıda paylaşacağım.