St.AnGeR
Document Visor..
SQL Server Yönetimi
v SQL Server, administrative tool’ları otomatikleştiren ve minimize eden yönetim araçları sağlar. (SQL Server Enterprise Manager sağlar)
v oSQL ve bcp gibi batch utilityleri kullanarak SQL Server yönetilebilir.
v Grafiksel yönetim araçları kullanılarak SQL Server yönetilebilir.
v Visual Basic gibi COM uygulamaları kullanılarak SQL Server yönetilebilir.
Transact-SQL, SQL Server’ın yönetimi için kullanılan, alt mekanizmadır.
SQL Distributed Yönetim Nesneleri (SQL -DMO)
SQL-DMO, SQL Server tarafından kullanılan COM tabanlı yönetim nesneleri yığınıdır. Transact-SQL ifadelerinin detaylarını gizler ve yönetim scripti yazmak için uygundur. Grafiksel yönetim araçları SQL –DMO kullanılarak yazılmıştır.
SQL Server Agent
SQL Server Agent, aşağıdaki yönetimsel görevleri yerine getirebilmek için SQL Server ile birleşim içinde çalışan bir servistir.
Alert Yönetimi: Bir job (iş) bittiği zamanki veya bir hata meydana geldiği zamanki, işlem durumu hakkında bilgi sağlar. SQL Server Agent, eventler için WinNT application event log’u denetler ve alert’ler meydana getirir.
Notification: Bir alert meydana geldiği zaman, SQL Server, bir e-mail mesajı veya bir işlem sayfası gönderebilir veya başka bir uygulama başlatabilir. Bir veritabanı veya transaction log dolu olduğunda veya yedekleme başarılı olduğunda, bu olayların meydana geldiğini gösteren bir alert ayarlanabilir.
Job Execution: Job’lar tek adımlı işler olarak basit olabilir, veya çok adımlı işlemler olarak karmaşık olabilirler. İşletim sistemi komutlarıyla, Transact_SQL ile job step’leri yaratılabilir.
Replication Yönetimi: Replication veriyi veya işlemleri, bir server’dan diğerine kopyalama işlemidir. SQL Server Agent, server’lar arasındaki veri uyumundan, değiştirilen veriyi denetlemeden, bilgiyi server’lara kopyalamadan sorumludur.
SQL Server Güvenliği
SQL Server iki tip güvenlik sağlar. Bunlar; giriş belgeleri, veritabanı kullanıcı account’u ve rolleri üzerindeki izin geçerliliği.
Login Authentication
Kullanıcının SQL Server’a bağlanması için login account’a sahip olması gerekir. SQL Server iki giriş belgesi mekanizmasını onaylar; SQL Server belgesi ve Win NT belgesi. Her birinin farklı giriş hesabı tipi var.
SQL Server Belgesi
SQL Server belgesi kullanıldığı zaman, SQL Server sistem yöneticisi, giriş hesabı ve şifresi tanımlayabiliyor. Kullanıcılar, SQL Server’a bağlandıkları zaman, giriş ve şifrenin her ikisini de elde etmeli.
WinNT Belgesi
WinNT belgesi kullanıldığı zaman Win NT account veya grup kullanıcıları,SQL Server’a bağlanacağı zaman, bir SQL Server login account’u elde etmeden, SQL Server’a erişebilir. SQL Server sistem yöneticisi, geçerli bir SQL Server login account’u olarak ya WinNT account ya da WinNT grup tanımlamalı.
Belge Modu
SQL Server Win NT’de çalışırken, sistem yöneticisi, SQL’in iki belge modundan birinde çalıştığını belirtebilir. Bu modlar:
Windows NT Belge Modu: Sadece WinNT belgesi izinlidir. Kullanıcılar SQL Server giriş hesabı belirleyemez.
Mixed Mode: Bu belge modu kullanıldığında, kullanıcılar WinNT belgeleriyle veya SQL Server belgeleriyle SQL Server’a bağlanabilirler. Mixed security, ya uyumlu ya da standart güvenlik kullanılarak giriş isteklerini onaylamaya izin verir. Güvenilir bağlantılar (uyumlu güvenlik tarafından kullanılan) veya güvenilir olmayan (standart güvenlik tarafından kullanılan) bağlantılar tanınırlar.
Integrated security
Bütün bağlantılarda loginleri doğrulamak için, SQL Server’ın WinNT authentication mekanizmasını kullanmasına izin verir. Sadece güvenilir bağlantılar (multi-protocol ve named pipes) izinlidir.
Standart security
Bütün bağlantılar için SQL Server’ın kendi login doğrulama işlemini kullanır. SQL Server’a log olabilmek için, herbir kullanıcı, geçerli bir loginID ve şifre sağlamalı.
Veritabanı Kullanıcı Account’ları ve Roller
Kullanıcılar doğrulandığında ve SQL Server’a log olmaya izinli olduktan sonra veritabanında account’ları olmalı. Kullanıcı account’lar ve roller veritabanı içinde bir kullanıcıyı tanır ve nesneleri kontrol ederler. Statementleri çalıştırmaya izinli olur.
Veritabanı Kullanıcı Account’lar
Kullanıcı account’lar, güvenlik izinlerini uygulamak için kullanılır. WinNT kullanıcıları veya grupları veya SQL Server login account’larıdır. Kullanıcı account’lar bir veritabanına özgüdür.
Veritabanı Rolleri
Kullanıcıları, İzinlerin uygulanabildiği tek parçalar içinde bir araya toplamayı sağlar. Server seviyesi ve veritabanı seviyesinin herikisinde de roller mevcuttur. Ayrıca kendi kullanıcı tanımlı veritabanı rollerini de tanımlayabilirsin. SQL Server, ortak yönetim fonksiyonları için öncelikli tanımlı server ve veritabanı rolleri sağlar. Böylece özel kullanıcılara yönetim izinleri kolayca verilebilir.
Fixed Server Role
Fixed Server Role, server seviyesinde yönetim ayrıcalıkları sağlar. Bu roller, Server seviyesinde kullanıcı veritabanlarını etkilemeden yönetilirler. Aşağıda Fixed Server Rolelerle ilgili bir tablo vardır.
Role
İzin
Veritabanı yaratıcıları (dbcreator)
Veritabanlarını yaratır ve değiştirir.
Disk Yöneticileri (diskadmin)
Disk dosyalarını yönetir.
Process Yöneticileri (processadmin)
SQL Server Processleri yönetir.
Güvenlik Yöneticileri (securityadmin)
Server loginleri yönetir ve audit eder (denetler).
Server Yöneticileri (serveradmin)
Server-wide ayarlarını yapar
Setup Yöneticileri (setupadmin)
Kopyayı kurar.
Sistem Yöneticileri (sysadmin)
Herhangi bir aktiviteyi yerine getirir.
Fixed Database Role
Veritabanı seviyesinde yönetim ayrıcalıkları sağlar. Aşağıda Fixed Server Rolelerle ilgili bir tablo vardır.
Role
İzin
Public
Bir veritabanındaki kullanıcılar için tüm geçerli olan izinleri sağlar.
Db_owner
Herhangi bir veritabanı rolü aktivitesini icra eder
Db_accessadmin
Veritabanı kullanıcılarını, grupları, ve rolleri ekler veya kaldırır.
Db_ddladmin
Veritabanı nesnelerini ekler, değiştirir veya kaldırır.
Db_securityadmin
Statement ve nesne izinlerini belirler.
Db_backupoperator
Veritabanını yedekler ve açar.
Db_datareader
Herhangi bir tablodan veri okur.
Db_datawriter
Veri ekler, değiştirir veya bütün tablolardan veri siler.
Db_denydatareader
Herhangi bir tablodan veri okumaz.
Db_denydatawriter
Herhangi bir tablodan veri değiştirmez.
Kullanıcı Tanımlı Roller
Kendi organizasyonundaki, bir işşçi grubu tarafından yapılan işi göstermek için, kendi veritabanı rollerini yaratabilirsin. Herbir kişi için izinlerin ayrı ayrı onaylanmasına ve iptal edilmesine gerek yok. Rol fonksiyonu değişirse, tüm rol üyeleri için izin değişikliği otomatik olarak yapılır.
İzin Onayları
SQL Server veritabanı güvenliğini yürütmek için izinleri kullanır. SQL Server, Transact-SQL ifadelerinin, view’ları, ve stored procedure’lerin kullanılması için yetki verir. İzinler herbir kullanıcının durumuna bağlı olarak belirlenir (sa, dbo, database object owner olarak). Bunlar iki tiptir: Nesne izinleri, statement izinleri.
Herbir veritabanı içinde belirli hareketleri sınırlamak için kullanıcı hesaplarına ve rollerine izinler verilebilir. Bir kullanıcı başarılı bir şekilde bağlandıktan sonra SQL Server komutları kabul eder. İzinler onaylanırken, SQL Server aşağıdaki adımları takip eder:
1. Kullanıcı Transact-SQL ifadelerini çalıştırdığında veya bir menü seçeneği seçme işlemleri yerine getirdiği zaman, Transact-SQL ifadeleri SQL Server’a gönderilir.
2. SQL Server, Transact-SQL ifadesini aldığında kullanıcının ifadeyi çalıştırma izninin olup olmadığını kontrol eder.
3. SQL Server aşağıdaki iki hareketi yerine getirir:
· Eğer kullanıcının izni yoksa, SQL Server bir hata mesajı gönderir.
· Eğer kullanıcının izni varsa, SQL Server isteneni yerine getirir.
SQL Server Veritabanları
Veritabanı geliştirmek ve tamamlamak için SQL Server veritabanı yapısını anlamak gerekir.
Veritabanı Tipleri
Her SQL Server, iki veritabanı tipine sahiptir. Bunlar Sistem Veritabanları ve Kullanıcı Veritabanları. Sistem Veritabanları, SQL Server hakkındaki bütün bilgileri tutar. SQL Server, Sistem Veritabanını, sistemi yönetmek için kullanır. Kullanıcı veritabanları, kullanıcının yarattığıdır. SQL Server’ın bir kopyası, bir veya daha fazla kullanıcı veritabanınını yönetebilir. Veritabanlarının her iki tipi de veriyi depolar.
Sistem ve Kullanıcı Veritabanları
SQL Server Setup kurulurken, SQL Server 4 Sistem Veritabanı ve 2 Kullanıcı Veritabanı yaratır. Kopyalama işlemleri için, SQL Server konfigüre edilirken distribution veritabanı kurulur.Aşağıda herbir veritabanı tanımlanmıştır:
Veritabanı
Tanım
Master
Kullanıcı account’ları, sistem hata mesajlarını tutarak tüm kullanıcı veritabanlarını ve SQL Server işlemlerini kontrol eder
Model
Yeni kullanıcı veritabanları için kalıp ve örnekler sağlar.
Tempdb
Geçici tablolar için depo alanlar sağlar.
Msdb
SQL Server Aracısını destekler. Tasarlanmış bilgiler ve job için bir depo alanı sağlar.
Distribution
Kopyalamada kullanılan işlem verilerini tutar.
Pubs
Bilgi aracı olarak basit bir veritabanı sağlar.
Northwind
Bilgi aracı olarak basit bir veritabanı sağlar.
User1
Kullanıcı tanımlı veritabanını teşhis eder.
Uyarı: msdb veritabanını silme, SQL Server’ın pratikliğini azaltır.
Veritabanı Nesneleri
Bir veritabanı, veri, tablo ve diğer nesnelerin bir yığınıdır. Veritabanı nesneleri, veriyi tasarlamada ve veri güvenlik mekanizmasını tanımlamada yardımcı olur. Aşağıda SQL Server veritabanı nesneleri tanımlanmıştır:
Veritabanı Nesnesi
Tanım
Table
Sütunlarla birleşen satır yığınlarını tanımlar. Nesnelerin adlarını, tiplerini, anahtar özelliklerini tutar.
Veri tipi
Bir kolon veya değişken için izin verilen veri değerlerini tanımlar. SQL Server veri tipleri sağlar. Ayrıca kullanıcılar veri tipleri yaratabilirler.
Constraint
Kolonlarda tanımlanmış olan değerleri korumak için kurallar tanımlar. Veri uyumunu yöneten standart bir mekanizmadır.
Default
Başka değer sağlanmamışsa, kolona, önceden tanımlanmış bilginin yerleştirilmesini sağlar.
Rule
Veri tipinde veya sütunda yerleştirilmiş olan geçerli değerleri tanımlayan bilgileri içerir.
Index
Veri alımı için hızlı erişim sağlayan depo alanıdır. Veri uyumunu yürütür. Gruplanmış indexlerde anahtar değerlerin mantıksal veya indexlenmiş kuralları fizikseldir. Gruplanmamış indexlerde mantıksal index kuralı, fiziksele uymaz.
View
Bir veritabanındaki viewlardan veya bir yada daha fazla tablolardan veri arama yolu sağlar.
Stored Procedure
Birlikte çalışan Transact-SQL ifade kümelerinin ismidir.
Trigger
Stored procedure’ların özel bir formu. Bir kullanıcı bir tablodaki veriyi değiştirdiği zaman otomatik olarak çalıştırılır.
SQL Server Nesnelerinden Söz Etme
Bir SQL Server nesnesi iki şekilde tanımlanabilir.
1. Tam isim olarak server ismi, veritabanı ismi, owner ismi ve nesne ismi olarak 4 bölümden oluşur.
Formatı: server.database.owner.object (Fully Qualified İsmi)
SQL Server’da yaratılan her bir nesnenin tek bir fully qualified ismi olmalı. Yani aynı veritabanı içinde aynı owner’lara bağlı orders isimli iki tablo olabilir. Bunlar farklı owner’lara bağlı olabilir. Ayrıca sütun isimleri tablo veya view içinde tek olmalı.
2. Bölümlü olarak belirlenmiş isim; bir nesneden söz edilirken serverı, veritabanını ve ownerı her zaman belirtme zorunluluğu yok.
Formatı: server.database..object
Server…object
Bir nesne yaratılırken, ismin farklı bölümleri belirlenmemişse SQL Server aşağıdaki geçerli değerleri kullanır.
§ Server belirlenmemişse, lokal server göz önüne alınır.
§ Veritabanı belirlenmemişse, geçerli veritabanı göz önüne alınır.
§ Owner belirlenmemişse, LoginID ile bağlanan kullanıcı ismi göz önüne alınır.
Örnek: Bir kullanıcı, northwind veritabanında db_owner veya db_ddladmin rolünün bir üyesidir. Nesnenin owner’I olarak dbo kullanılabilir.
CREATE TABLE northwind.dbo.order_history
(OrderID INT
, ProductID int
, UnitPrice money
, Quantity int
, Discount decimal
)
Bir çok nesne yerel server’a gelmeyip daha çok Üç bölümlü isim kullanırlar.
Dört bölümlü isim genellikle stored procedure’leri çağırmak veya distributed (dağılmış) sorgular için kullanılır.
Sistem Tabloları
Sistem tabloları, veritabanlarındaki sistem ve nesneler hakkındaki bilgileri içerir ve metadata olarak adlandırılır. Metadata veri hakkındaki bilgilerdir.
Database Katalog
Her bir veritabanı, belirli veritabanı hakkındaki metadataları depolayan sistem tablolarını yığınlarını içerir. Sistem tabloları yığını veritabanı kataloğudur.
Sistem Katalog
Sadece master veritabanında bulunur. Tüm sistem veya diğer tüm veritabanları hakkındaki metadataları depolayan sistem tablolarını içerir. Sistem tabloları sys ön eki ile başlıyor.
Sistem Tablosu
Veritabanı
Fonksiyon
Syslogins
Master
SQL Server’a bağlanabilen her bir login account’u için bir satır (row) içerir.
Sysmessages
Master
SQL Server’ın döndürebildiği herbir sistem hatası için bir row içerir.
Sysdatabases
Master
SQL Server üzerindeki herbir veritabanı için bir row içerir.
Sysusers
Bütün
Bir veritabanı üzerindeki herbir SQL Server rolü, SQL Server kullanıcısı, WinNT grubu, WinNT kullanıcısı için bir row içerir.
Sysobjects
Bütün
Bir veritabanındaki herbir nesne için bir row içerir.
Metadata’nın Elde Edilmesi
Bir uygulama yazarak, sistem tablolarından metadata geri elde edilebilir. Bunun için sistem stored procedure’ları, sistem fonksiyonlarını, veya sistem supplied information schema views kullanılır. Bir sistem tablosu diğer veritabanı tabloları gibi sorgulanabilir. Sorgulanan sistem tablosunun script’I yazılamaz; çünkü eğer bir sistem tablosu gelecek versiyonlarda değiştirilirse yapılan script başarısızlığa uğrayabilir.
Uyarı: Kullanıcılar sistem tablolarını doğrudan değiştiremezler. Bir sistem tablosunu değiştirme, SQL Server’ın sistem başarısızlıklarını düzeltmesini imkansız hale getirebilir.
Sistem Stored Procedure
Veritabanı nesneleri ve server durumu hakkında bilgileri toplamak için büyük kolaylıklar sağlar. Sistem procedure’lar sp_ öneki ile başlar.
Sistem Stored Procedure
Tanım
Sp_help [object_name]
Belirlenmiş veritabanı nesneleri üzerindeki bilgileri sağlar.
Sp_helpdb [database_name]
Belirlenmiş veritabanı üzerindeki bilgileri sağlar.
Sp_helpindex [table_name]
Belirlenmiş tablo için index üzerindeki bilgileri sağlar.
Aşağıdaki örnek employee tablosundan bilgi almak için kullanılmıştır. Geçiş Parametresi
Sp_help employee
Sistem Fonksiyonları
Transact-SQL ifadeleriyle sistem tablolarının sorgulanması için bir metod sağlar.
Sistem Fonksiyonu
Geçiş Parametresi
Sonuçlar
DB_ID
İsim (Name)
Veritabanı ID’sini
Geri döndürür.
USER_NAME
ID
Kullanıcı adını geri döndürür
COL_LENGTH
Sütun (Column)
Sütun genişliğini geri döndürür.
STATS_DATE
Index
belirlenmiş indexin son güncellendiği tarihi geri döndürür.
DATALENGTH
Veri Tipi
Herhangi bir veritipi ifadesinin uzunluğunu geri döndürür.
Aşağıdaki örnek UserId’si 10 olan kullanıcı ismini almak için kullanılmıştır. Geçiş Parametresi
SELECT USER_NAME(10)
Information Schema Views
Veritabanına yerleştirilmiş bütün veri nesnelerinin metadatalarını içerir. Information_schema öneki ile tanımlanır.
Information Schema View
Tanım
Information_schema.tables
Veritabanındaki tabloların listesi
Information_schema.columns
Veritabanında tanımlanmış sütunlar üzerindeki bilgiler
Information_schema.tables_ privileges
Veritabanındaki tablolar için güvenlik bilgileri
Aşağıdaki örnek; veritabanındaki tabloların bir listesini almak için kullanılmıştır. Geçiş Parametresi
SELECT * FROM information_schema.tables
SQL Server için Bir Uygulama Tasarlama
SQL Server için bir uygulama tasarlamadan önce, harcanacak zaman önemlidir. İyi bir tasarlama, çok az değişiklik ister ve genellikle çok verimli çalışır. Seçilen mimari, yazılım uygulamasının yönetimini, gelişimini etkiler.
Yazılım Mimarisi
Client/server uygulamalarını tamamlamak, için farklı uygulama mimarilerinden biri kullanılabilir. Yazılım uygulamaları bir yada daha fazla server üzerine fiziksel olarak yerlaştirilen 3 mantıksal tabakaya ayrılabilir.
Mantıksal Tabaka
Tanım
Presentation
Veri ve uygulamayı kullanıcılara sunma mantığı içerir. Bu tabaka, client üzerinde tamamlanır.
Business
Business kuralları ve uygulama mantığı içerir. SQL Server, bu tabaka ile ilgili olabilir.
Veri
Veritabanı tanımın, veri uyum mantığını, stored procedure’ları, ve veri ile ilgili olan diğer işlemleri içerir.
Mimari Tasarı
Intelligent Server (2-Tier)
Client üzerinde ele alınan presentation servisleriyle, server üzerinde bir çok işlem meydana gelir. Bir çok örnekte; business servislerinin çoğu veritabanında yerine getirilir. Bu tasarı, client’lar business mantığını oluşturacak yeterli kaynağa sahip olmadığında yararlıdır. Server daralabilir; çünkü veritabanı ve business servisleri aynı donanım kaynakları üzerinde yarışır.
Intelligent Client (2-Tier)
Server üzerinde ele alınan veri servisleriyle, client üzerinde bir çok işlem meydana gelir. Bu tasarı, çok kullanılan client/server ortamıdır. Network trafiği karışık ve işlemler uzun olabilir.
Microsoft Access bu tasarının bir örneğidir.
N-Tier
İşlemler, veritabanı server’ı, uygulama server’ı ve client olarak ayrılır. Gerektiği kadar uygulama server’ı ve veritabanı server’ı kolayca eklenebilir. Bu yöntem, küçük uygulamalar için yavaşlayabilir.
Internet
İşlemler, Web server üzerinde bulunan business ve presentation servisleri, ve client’lar olarak ayrılır. Client desteklenen bir browser’a sahiptir.
SQL Server Veritabanını Tamamlama
Bir SQL Server veritabanını tamamlama, planlama, yaratma anlamındadır.
Veritabanı karmaşıklığı ve boyutu ne olursa olsun bir veritabanını tamamlama aşağıdaki adımları kapsar:
ü Uygulamanın, donanımı en iyi şekilde kullanacağı veritabanını tasarlamaya ve herbir nesne ve ilişki tipi için veri tabanı nesnelerini modellemeye ve bilgi tiplerini belirlemeye izin verir.
ü Veritabanı ve nesneleri yaratmayı, tabloları içermeyi, veri güvenilirlik mekanizmalarını, veri girişi ve nesnelerin geri elde edilmesini, güvenliği kapsar
ü Uygulamayı ve veritabanını test eder.
Bir veritabanı tasarlarken, veritabanının önemli fonksiyonları doğru olarak yerine getirip getirmediği garanti altına alınmak istenebilir.
ü Konfigüre edilmiş server’lar ve client’ları, denetlenen server performansını, işlemleri, jobları, uygulamayı yönetme, ve yönetilen uyarıları, yönetilen güvenliği ve yönetilen veritabanı backup procedure’leri içerir.
ü Server’ları ve client’ları konfigüre etme, server performansını denetleme, job’ları, alertleri, operatorleri, güvenliği ve veritabanı yedekleme procedure’lerini yönetme işlemlerini kapsar.
SQL Server Veritabanını Yönetme
SQL Server veritabanını yönetme aşağıdaki adımları kapsar.
¨ SQL Server’ı kurma ve konfigüre etme ve network güvenliğini doğrulama
¨ Veritabanları kurma
Task’lar, veritabanı ve log için disk alanları tahsis eder, veritabanına veri transferi yapar, veritabanı güvenliğini tanımlar ve tamamlar, tekrerlanmış task’lar için otomatikleşitrme job’ları yaratır.
Veriyi import etme, ve export etme, veritabanını ve log’u yedekleme ve açma, veritabanını denetleme aktivitelerini yönetir.
v SQL Server, administrative tool’ları otomatikleştiren ve minimize eden yönetim araçları sağlar. (SQL Server Enterprise Manager sağlar)
v oSQL ve bcp gibi batch utilityleri kullanarak SQL Server yönetilebilir.
v Grafiksel yönetim araçları kullanılarak SQL Server yönetilebilir.
v Visual Basic gibi COM uygulamaları kullanılarak SQL Server yönetilebilir.
Transact-SQL, SQL Server’ın yönetimi için kullanılan, alt mekanizmadır.
SQL Distributed Yönetim Nesneleri (SQL -DMO)
SQL-DMO, SQL Server tarafından kullanılan COM tabanlı yönetim nesneleri yığınıdır. Transact-SQL ifadelerinin detaylarını gizler ve yönetim scripti yazmak için uygundur. Grafiksel yönetim araçları SQL –DMO kullanılarak yazılmıştır.
SQL Server Agent
SQL Server Agent, aşağıdaki yönetimsel görevleri yerine getirebilmek için SQL Server ile birleşim içinde çalışan bir servistir.
Alert Yönetimi: Bir job (iş) bittiği zamanki veya bir hata meydana geldiği zamanki, işlem durumu hakkında bilgi sağlar. SQL Server Agent, eventler için WinNT application event log’u denetler ve alert’ler meydana getirir.
Notification: Bir alert meydana geldiği zaman, SQL Server, bir e-mail mesajı veya bir işlem sayfası gönderebilir veya başka bir uygulama başlatabilir. Bir veritabanı veya transaction log dolu olduğunda veya yedekleme başarılı olduğunda, bu olayların meydana geldiğini gösteren bir alert ayarlanabilir.
Job Execution: Job’lar tek adımlı işler olarak basit olabilir, veya çok adımlı işlemler olarak karmaşık olabilirler. İşletim sistemi komutlarıyla, Transact_SQL ile job step’leri yaratılabilir.
Replication Yönetimi: Replication veriyi veya işlemleri, bir server’dan diğerine kopyalama işlemidir. SQL Server Agent, server’lar arasındaki veri uyumundan, değiştirilen veriyi denetlemeden, bilgiyi server’lara kopyalamadan sorumludur.
SQL Server Güvenliği
SQL Server iki tip güvenlik sağlar. Bunlar; giriş belgeleri, veritabanı kullanıcı account’u ve rolleri üzerindeki izin geçerliliği.
Login Authentication
Kullanıcının SQL Server’a bağlanması için login account’a sahip olması gerekir. SQL Server iki giriş belgesi mekanizmasını onaylar; SQL Server belgesi ve Win NT belgesi. Her birinin farklı giriş hesabı tipi var.
SQL Server Belgesi
SQL Server belgesi kullanıldığı zaman, SQL Server sistem yöneticisi, giriş hesabı ve şifresi tanımlayabiliyor. Kullanıcılar, SQL Server’a bağlandıkları zaman, giriş ve şifrenin her ikisini de elde etmeli.
WinNT Belgesi
WinNT belgesi kullanıldığı zaman Win NT account veya grup kullanıcıları,SQL Server’a bağlanacağı zaman, bir SQL Server login account’u elde etmeden, SQL Server’a erişebilir. SQL Server sistem yöneticisi, geçerli bir SQL Server login account’u olarak ya WinNT account ya da WinNT grup tanımlamalı.
Belge Modu
SQL Server Win NT’de çalışırken, sistem yöneticisi, SQL’in iki belge modundan birinde çalıştığını belirtebilir. Bu modlar:
Windows NT Belge Modu: Sadece WinNT belgesi izinlidir. Kullanıcılar SQL Server giriş hesabı belirleyemez.
Mixed Mode: Bu belge modu kullanıldığında, kullanıcılar WinNT belgeleriyle veya SQL Server belgeleriyle SQL Server’a bağlanabilirler. Mixed security, ya uyumlu ya da standart güvenlik kullanılarak giriş isteklerini onaylamaya izin verir. Güvenilir bağlantılar (uyumlu güvenlik tarafından kullanılan) veya güvenilir olmayan (standart güvenlik tarafından kullanılan) bağlantılar tanınırlar.
Integrated security
Bütün bağlantılarda loginleri doğrulamak için, SQL Server’ın WinNT authentication mekanizmasını kullanmasına izin verir. Sadece güvenilir bağlantılar (multi-protocol ve named pipes) izinlidir.
Standart security
Bütün bağlantılar için SQL Server’ın kendi login doğrulama işlemini kullanır. SQL Server’a log olabilmek için, herbir kullanıcı, geçerli bir loginID ve şifre sağlamalı.
Veritabanı Kullanıcı Account’ları ve Roller
Kullanıcılar doğrulandığında ve SQL Server’a log olmaya izinli olduktan sonra veritabanında account’ları olmalı. Kullanıcı account’lar ve roller veritabanı içinde bir kullanıcıyı tanır ve nesneleri kontrol ederler. Statementleri çalıştırmaya izinli olur.
Veritabanı Kullanıcı Account’lar
Kullanıcı account’lar, güvenlik izinlerini uygulamak için kullanılır. WinNT kullanıcıları veya grupları veya SQL Server login account’larıdır. Kullanıcı account’lar bir veritabanına özgüdür.
Veritabanı Rolleri
Kullanıcıları, İzinlerin uygulanabildiği tek parçalar içinde bir araya toplamayı sağlar. Server seviyesi ve veritabanı seviyesinin herikisinde de roller mevcuttur. Ayrıca kendi kullanıcı tanımlı veritabanı rollerini de tanımlayabilirsin. SQL Server, ortak yönetim fonksiyonları için öncelikli tanımlı server ve veritabanı rolleri sağlar. Böylece özel kullanıcılara yönetim izinleri kolayca verilebilir.
Fixed Server Role
Fixed Server Role, server seviyesinde yönetim ayrıcalıkları sağlar. Bu roller, Server seviyesinde kullanıcı veritabanlarını etkilemeden yönetilirler. Aşağıda Fixed Server Rolelerle ilgili bir tablo vardır.
Role
İzin
Veritabanı yaratıcıları (dbcreator)
Veritabanlarını yaratır ve değiştirir.
Disk Yöneticileri (diskadmin)
Disk dosyalarını yönetir.
Process Yöneticileri (processadmin)
SQL Server Processleri yönetir.
Güvenlik Yöneticileri (securityadmin)
Server loginleri yönetir ve audit eder (denetler).
Server Yöneticileri (serveradmin)
Server-wide ayarlarını yapar
Setup Yöneticileri (setupadmin)
Kopyayı kurar.
Sistem Yöneticileri (sysadmin)
Herhangi bir aktiviteyi yerine getirir.
Fixed Database Role
Veritabanı seviyesinde yönetim ayrıcalıkları sağlar. Aşağıda Fixed Server Rolelerle ilgili bir tablo vardır.
Role
İzin
Public
Bir veritabanındaki kullanıcılar için tüm geçerli olan izinleri sağlar.
Db_owner
Herhangi bir veritabanı rolü aktivitesini icra eder
Db_accessadmin
Veritabanı kullanıcılarını, grupları, ve rolleri ekler veya kaldırır.
Db_ddladmin
Veritabanı nesnelerini ekler, değiştirir veya kaldırır.
Db_securityadmin
Statement ve nesne izinlerini belirler.
Db_backupoperator
Veritabanını yedekler ve açar.
Db_datareader
Herhangi bir tablodan veri okur.
Db_datawriter
Veri ekler, değiştirir veya bütün tablolardan veri siler.
Db_denydatareader
Herhangi bir tablodan veri okumaz.
Db_denydatawriter
Herhangi bir tablodan veri değiştirmez.
Kullanıcı Tanımlı Roller
Kendi organizasyonundaki, bir işşçi grubu tarafından yapılan işi göstermek için, kendi veritabanı rollerini yaratabilirsin. Herbir kişi için izinlerin ayrı ayrı onaylanmasına ve iptal edilmesine gerek yok. Rol fonksiyonu değişirse, tüm rol üyeleri için izin değişikliği otomatik olarak yapılır.
İzin Onayları
SQL Server veritabanı güvenliğini yürütmek için izinleri kullanır. SQL Server, Transact-SQL ifadelerinin, view’ları, ve stored procedure’lerin kullanılması için yetki verir. İzinler herbir kullanıcının durumuna bağlı olarak belirlenir (sa, dbo, database object owner olarak). Bunlar iki tiptir: Nesne izinleri, statement izinleri.
Herbir veritabanı içinde belirli hareketleri sınırlamak için kullanıcı hesaplarına ve rollerine izinler verilebilir. Bir kullanıcı başarılı bir şekilde bağlandıktan sonra SQL Server komutları kabul eder. İzinler onaylanırken, SQL Server aşağıdaki adımları takip eder:
1. Kullanıcı Transact-SQL ifadelerini çalıştırdığında veya bir menü seçeneği seçme işlemleri yerine getirdiği zaman, Transact-SQL ifadeleri SQL Server’a gönderilir.
2. SQL Server, Transact-SQL ifadesini aldığında kullanıcının ifadeyi çalıştırma izninin olup olmadığını kontrol eder.
3. SQL Server aşağıdaki iki hareketi yerine getirir:
· Eğer kullanıcının izni yoksa, SQL Server bir hata mesajı gönderir.
· Eğer kullanıcının izni varsa, SQL Server isteneni yerine getirir.
SQL Server Veritabanları
Veritabanı geliştirmek ve tamamlamak için SQL Server veritabanı yapısını anlamak gerekir.
Veritabanı Tipleri
Her SQL Server, iki veritabanı tipine sahiptir. Bunlar Sistem Veritabanları ve Kullanıcı Veritabanları. Sistem Veritabanları, SQL Server hakkındaki bütün bilgileri tutar. SQL Server, Sistem Veritabanını, sistemi yönetmek için kullanır. Kullanıcı veritabanları, kullanıcının yarattığıdır. SQL Server’ın bir kopyası, bir veya daha fazla kullanıcı veritabanınını yönetebilir. Veritabanlarının her iki tipi de veriyi depolar.
Sistem ve Kullanıcı Veritabanları
SQL Server Setup kurulurken, SQL Server 4 Sistem Veritabanı ve 2 Kullanıcı Veritabanı yaratır. Kopyalama işlemleri için, SQL Server konfigüre edilirken distribution veritabanı kurulur.Aşağıda herbir veritabanı tanımlanmıştır:
Veritabanı
Tanım
Master
Kullanıcı account’ları, sistem hata mesajlarını tutarak tüm kullanıcı veritabanlarını ve SQL Server işlemlerini kontrol eder
Model
Yeni kullanıcı veritabanları için kalıp ve örnekler sağlar.
Tempdb
Geçici tablolar için depo alanlar sağlar.
Msdb
SQL Server Aracısını destekler. Tasarlanmış bilgiler ve job için bir depo alanı sağlar.
Distribution
Kopyalamada kullanılan işlem verilerini tutar.
Pubs
Bilgi aracı olarak basit bir veritabanı sağlar.
Northwind
Bilgi aracı olarak basit bir veritabanı sağlar.
User1
Kullanıcı tanımlı veritabanını teşhis eder.
Uyarı: msdb veritabanını silme, SQL Server’ın pratikliğini azaltır.
Veritabanı Nesneleri
Bir veritabanı, veri, tablo ve diğer nesnelerin bir yığınıdır. Veritabanı nesneleri, veriyi tasarlamada ve veri güvenlik mekanizmasını tanımlamada yardımcı olur. Aşağıda SQL Server veritabanı nesneleri tanımlanmıştır:
Veritabanı Nesnesi
Tanım
Table
Sütunlarla birleşen satır yığınlarını tanımlar. Nesnelerin adlarını, tiplerini, anahtar özelliklerini tutar.
Veri tipi
Bir kolon veya değişken için izin verilen veri değerlerini tanımlar. SQL Server veri tipleri sağlar. Ayrıca kullanıcılar veri tipleri yaratabilirler.
Constraint
Kolonlarda tanımlanmış olan değerleri korumak için kurallar tanımlar. Veri uyumunu yöneten standart bir mekanizmadır.
Default
Başka değer sağlanmamışsa, kolona, önceden tanımlanmış bilginin yerleştirilmesini sağlar.
Rule
Veri tipinde veya sütunda yerleştirilmiş olan geçerli değerleri tanımlayan bilgileri içerir.
Index
Veri alımı için hızlı erişim sağlayan depo alanıdır. Veri uyumunu yürütür. Gruplanmış indexlerde anahtar değerlerin mantıksal veya indexlenmiş kuralları fizikseldir. Gruplanmamış indexlerde mantıksal index kuralı, fiziksele uymaz.
View
Bir veritabanındaki viewlardan veya bir yada daha fazla tablolardan veri arama yolu sağlar.
Stored Procedure
Birlikte çalışan Transact-SQL ifade kümelerinin ismidir.
Trigger
Stored procedure’ların özel bir formu. Bir kullanıcı bir tablodaki veriyi değiştirdiği zaman otomatik olarak çalıştırılır.
SQL Server Nesnelerinden Söz Etme
Bir SQL Server nesnesi iki şekilde tanımlanabilir.
1. Tam isim olarak server ismi, veritabanı ismi, owner ismi ve nesne ismi olarak 4 bölümden oluşur.
Formatı: server.database.owner.object (Fully Qualified İsmi)
SQL Server’da yaratılan her bir nesnenin tek bir fully qualified ismi olmalı. Yani aynı veritabanı içinde aynı owner’lara bağlı orders isimli iki tablo olabilir. Bunlar farklı owner’lara bağlı olabilir. Ayrıca sütun isimleri tablo veya view içinde tek olmalı.
2. Bölümlü olarak belirlenmiş isim; bir nesneden söz edilirken serverı, veritabanını ve ownerı her zaman belirtme zorunluluğu yok.
Formatı: server.database..object
Server…object
Bir nesne yaratılırken, ismin farklı bölümleri belirlenmemişse SQL Server aşağıdaki geçerli değerleri kullanır.
§ Server belirlenmemişse, lokal server göz önüne alınır.
§ Veritabanı belirlenmemişse, geçerli veritabanı göz önüne alınır.
§ Owner belirlenmemişse, LoginID ile bağlanan kullanıcı ismi göz önüne alınır.
Örnek: Bir kullanıcı, northwind veritabanında db_owner veya db_ddladmin rolünün bir üyesidir. Nesnenin owner’I olarak dbo kullanılabilir.
CREATE TABLE northwind.dbo.order_history
(OrderID INT
, ProductID int
, UnitPrice money
, Quantity int
, Discount decimal
)
Bir çok nesne yerel server’a gelmeyip daha çok Üç bölümlü isim kullanırlar.
Dört bölümlü isim genellikle stored procedure’leri çağırmak veya distributed (dağılmış) sorgular için kullanılır.
Sistem Tabloları
Sistem tabloları, veritabanlarındaki sistem ve nesneler hakkındaki bilgileri içerir ve metadata olarak adlandırılır. Metadata veri hakkındaki bilgilerdir.
Database Katalog
Her bir veritabanı, belirli veritabanı hakkındaki metadataları depolayan sistem tablolarını yığınlarını içerir. Sistem tabloları yığını veritabanı kataloğudur.
Sistem Katalog
Sadece master veritabanında bulunur. Tüm sistem veya diğer tüm veritabanları hakkındaki metadataları depolayan sistem tablolarını içerir. Sistem tabloları sys ön eki ile başlıyor.
Sistem Tablosu
Veritabanı
Fonksiyon
Syslogins
Master
SQL Server’a bağlanabilen her bir login account’u için bir satır (row) içerir.
Sysmessages
Master
SQL Server’ın döndürebildiği herbir sistem hatası için bir row içerir.
Sysdatabases
Master
SQL Server üzerindeki herbir veritabanı için bir row içerir.
Sysusers
Bütün
Bir veritabanı üzerindeki herbir SQL Server rolü, SQL Server kullanıcısı, WinNT grubu, WinNT kullanıcısı için bir row içerir.
Sysobjects
Bütün
Bir veritabanındaki herbir nesne için bir row içerir.
Metadata’nın Elde Edilmesi
Bir uygulama yazarak, sistem tablolarından metadata geri elde edilebilir. Bunun için sistem stored procedure’ları, sistem fonksiyonlarını, veya sistem supplied information schema views kullanılır. Bir sistem tablosu diğer veritabanı tabloları gibi sorgulanabilir. Sorgulanan sistem tablosunun script’I yazılamaz; çünkü eğer bir sistem tablosu gelecek versiyonlarda değiştirilirse yapılan script başarısızlığa uğrayabilir.
Uyarı: Kullanıcılar sistem tablolarını doğrudan değiştiremezler. Bir sistem tablosunu değiştirme, SQL Server’ın sistem başarısızlıklarını düzeltmesini imkansız hale getirebilir.
Sistem Stored Procedure
Veritabanı nesneleri ve server durumu hakkında bilgileri toplamak için büyük kolaylıklar sağlar. Sistem procedure’lar sp_ öneki ile başlar.
Sistem Stored Procedure
Tanım
Sp_help [object_name]
Belirlenmiş veritabanı nesneleri üzerindeki bilgileri sağlar.
Sp_helpdb [database_name]
Belirlenmiş veritabanı üzerindeki bilgileri sağlar.
Sp_helpindex [table_name]
Belirlenmiş tablo için index üzerindeki bilgileri sağlar.
Aşağıdaki örnek employee tablosundan bilgi almak için kullanılmıştır. Geçiş Parametresi
Sp_help employee
Sistem Fonksiyonları
Transact-SQL ifadeleriyle sistem tablolarının sorgulanması için bir metod sağlar.
Sistem Fonksiyonu
Geçiş Parametresi
Sonuçlar
DB_ID
İsim (Name)
Veritabanı ID’sini
Geri döndürür.
USER_NAME
ID
Kullanıcı adını geri döndürür
COL_LENGTH
Sütun (Column)
Sütun genişliğini geri döndürür.
STATS_DATE
Index
belirlenmiş indexin son güncellendiği tarihi geri döndürür.
DATALENGTH
Veri Tipi
Herhangi bir veritipi ifadesinin uzunluğunu geri döndürür.
Aşağıdaki örnek UserId’si 10 olan kullanıcı ismini almak için kullanılmıştır. Geçiş Parametresi
SELECT USER_NAME(10)
Information Schema Views
Veritabanına yerleştirilmiş bütün veri nesnelerinin metadatalarını içerir. Information_schema öneki ile tanımlanır.
Information Schema View
Tanım
Information_schema.tables
Veritabanındaki tabloların listesi
Information_schema.columns
Veritabanında tanımlanmış sütunlar üzerindeki bilgiler
Information_schema.tables_ privileges
Veritabanındaki tablolar için güvenlik bilgileri
Aşağıdaki örnek; veritabanındaki tabloların bir listesini almak için kullanılmıştır. Geçiş Parametresi
SELECT * FROM information_schema.tables
SQL Server için Bir Uygulama Tasarlama
SQL Server için bir uygulama tasarlamadan önce, harcanacak zaman önemlidir. İyi bir tasarlama, çok az değişiklik ister ve genellikle çok verimli çalışır. Seçilen mimari, yazılım uygulamasının yönetimini, gelişimini etkiler.
Yazılım Mimarisi
Client/server uygulamalarını tamamlamak, için farklı uygulama mimarilerinden biri kullanılabilir. Yazılım uygulamaları bir yada daha fazla server üzerine fiziksel olarak yerlaştirilen 3 mantıksal tabakaya ayrılabilir.
Mantıksal Tabaka
Tanım
Presentation
Veri ve uygulamayı kullanıcılara sunma mantığı içerir. Bu tabaka, client üzerinde tamamlanır.
Business
Business kuralları ve uygulama mantığı içerir. SQL Server, bu tabaka ile ilgili olabilir.
Veri
Veritabanı tanımın, veri uyum mantığını, stored procedure’ları, ve veri ile ilgili olan diğer işlemleri içerir.
Mimari Tasarı
Intelligent Server (2-Tier)
Client üzerinde ele alınan presentation servisleriyle, server üzerinde bir çok işlem meydana gelir. Bir çok örnekte; business servislerinin çoğu veritabanında yerine getirilir. Bu tasarı, client’lar business mantığını oluşturacak yeterli kaynağa sahip olmadığında yararlıdır. Server daralabilir; çünkü veritabanı ve business servisleri aynı donanım kaynakları üzerinde yarışır.
Intelligent Client (2-Tier)
Server üzerinde ele alınan veri servisleriyle, client üzerinde bir çok işlem meydana gelir. Bu tasarı, çok kullanılan client/server ortamıdır. Network trafiği karışık ve işlemler uzun olabilir.
Microsoft Access bu tasarının bir örneğidir.
N-Tier
İşlemler, veritabanı server’ı, uygulama server’ı ve client olarak ayrılır. Gerektiği kadar uygulama server’ı ve veritabanı server’ı kolayca eklenebilir. Bu yöntem, küçük uygulamalar için yavaşlayabilir.
Internet
İşlemler, Web server üzerinde bulunan business ve presentation servisleri, ve client’lar olarak ayrılır. Client desteklenen bir browser’a sahiptir.
SQL Server Veritabanını Tamamlama
Bir SQL Server veritabanını tamamlama, planlama, yaratma anlamındadır.
Veritabanı karmaşıklığı ve boyutu ne olursa olsun bir veritabanını tamamlama aşağıdaki adımları kapsar:
ü Uygulamanın, donanımı en iyi şekilde kullanacağı veritabanını tasarlamaya ve herbir nesne ve ilişki tipi için veri tabanı nesnelerini modellemeye ve bilgi tiplerini belirlemeye izin verir.
ü Veritabanı ve nesneleri yaratmayı, tabloları içermeyi, veri güvenilirlik mekanizmalarını, veri girişi ve nesnelerin geri elde edilmesini, güvenliği kapsar
ü Uygulamayı ve veritabanını test eder.
Bir veritabanı tasarlarken, veritabanının önemli fonksiyonları doğru olarak yerine getirip getirmediği garanti altına alınmak istenebilir.
ü Konfigüre edilmiş server’lar ve client’ları, denetlenen server performansını, işlemleri, jobları, uygulamayı yönetme, ve yönetilen uyarıları, yönetilen güvenliği ve yönetilen veritabanı backup procedure’leri içerir.
ü Server’ları ve client’ları konfigüre etme, server performansını denetleme, job’ları, alertleri, operatorleri, güvenliği ve veritabanı yedekleme procedure’lerini yönetme işlemlerini kapsar.
SQL Server Veritabanını Yönetme
SQL Server veritabanını yönetme aşağıdaki adımları kapsar.
¨ SQL Server’ı kurma ve konfigüre etme ve network güvenliğini doğrulama
¨ Veritabanları kurma
Task’lar, veritabanı ve log için disk alanları tahsis eder, veritabanına veri transferi yapar, veritabanı güvenliğini tanımlar ve tamamlar, tekrerlanmış task’lar için otomatikleşitrme job’ları yaratır.
Veriyi import etme, ve export etme, veritabanını ve log’u yedekleme ve açma, veritabanını denetleme aktivitelerini yönetir.