SQL Server Yönetimi & Güwenlii..!!

St.AnGeR

Document Visor..
Katılım
17 Haz 2005
Mesajlar
1,832
Reaction score
0
Puanları
0
Konum
ιѕт              HHuser№: 9          Remote Admi
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.
 
Geri
Üst