Serdar Kurtoğlu

Sırılsıklam bir gökyüzü çıktı ağlardan

Masmavi bütün balıkçılar...

Can Yücel










Kullanıcı Adı
Şifre

SQL 2005 Güvenlik/Veri Şifreleme
Yazdir Yazdir

Başlarken çok bişey yazmaya gerek yok. SQL 2005 ile gelen veri şifreleme işlem basamaklarını anlatacağım.

Not: Şifreleme deyip geçmeyin geri dönüşü olmayan yola girmeyin. Aman dikkat, yedekli çalışın.

. Database Alan Şifreleme işlem basamakları
 
a.     Şifrelencek alan VARBINARY(256) veri tipinde oluşturulur.
 
Örn:
CreateTable MusteriTest
(
  MusId INTPrimaryKeyIDENTITY,
 TelNo VARBINARY(256)   
)
 
b.     Database seviyesinde sertifika oluşturulur.
create master key encryption by password ='password';
c.     Master key kullanılmak üzere açılır.
OPEN MASTER KEY DECRYPTION BY PASSWORD ='password’
 
d.     Sertifika create edilir.
CREATECERTIFICATE Sertifika_Test
      WITH SUBJECT ='Ozel Sifreleme Algoritmasi.',
START_DATE ='07/07/2009'
 
e.     Simetrik Key create edilir.
 
CREATESYMMETRICKEY Key_Test
      WITH ALGORITHM = triple_des,
            identity_value ='password',
            key_source ='password'
            ENCRYPTION BYCERTIFICATE Sertifika_Test
go
 
 
      f.      Sertifikaların backupları alınabilmektedir. Sertifika backup alınırken bir şifre ile alınır. Aynı şifre sertifikayı create edilirken kullanılacaktır.
 
      Örn:
backupcertificate Sertifika_Test tofile='\\ortak\CertificatesBackup.cer'
 with private key(file='\\ortak\CertificatesBackup.pvk',
 encryption by password ='password')
 
g.     Her işlem öncesi (insert, update , select)opensymmetrickey deyimi ile key açılır.
 
opensymmetrickey Key_Test decryption byCERTIFICATE [Sertifika_Test]
 
h.     Her işlem sonrası (insert, update , select) CLOSESYMMETRICKEYdeyimi ile key kapatılır.
 
CLOSESYMMETRICKEY [Key_Test]
 
i.        Her insertlerde ve updatelerde şifreleme aşağıdaki örnekte olduğu gibi kullanılmaktadır.
INSERTINTO [MusteriTest] VALUES(encryptbykey(key_guid('Key_Test'), N'05331234567'))
 
--Açılır
opensymmetrickey Key_Test decryption byCERTIFICATE [Sertifika_Test]
--İlgili kayıtlar çekilir...
SELECT TelNo,
       convert(NVARCHAR(100), decryptbykey( TelNo ))as'TelNo'
FROM   [Musteri]
--kapatılır..
CLOSESYMMETRICKEY [Key_Test]
Copy , paste, F5 (Yani SQL'de New Query açılır, alttaki blok kopyalanır yapıştırılır sonra F5'e basılır.)
 

--Database seviyesinde master key üretilir.

create master key encryption by password ='TEST1234567#TEST12345789';

 

--Sertifika oluşturmadan önce master key open işlemi ile hazır konuma getirilir.

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'TEST1234567#TEST12345789'

 

 

CREATE CERTIFICATE New_Sertifika_Deneme

     WITH SUBJECT ='Ozel Sifreleme Algoritmasi.',

     START_DATE = '01/22/2010'

 

CREATE SYMMETRIC KEY New_Key_Deneme

  WITH ALGORITHM = triple_des,

      identity_value = 'TEST1234567#TEST12345789',

      key_source = 'TEST1234567#TEST12345789'

      ENCRYPTION BY CERTIFICATE New_Sertifika_Deneme

go

 

 

BULK INSERT (OPENROWSET)
Yazdir Yazdir

   SQL server 2005 ile birlikte yeni gelen bir özellik olan dosyayı okuma ve onu rowset haline getirip databasede saklama ile ilgili iki örnek ekledim. İlki xml dosya yapısı ikincisi bmp resim dosyası için. Nerelerde mi kullanırız? Günlük döviz kurlarını xml olarak database aktarmada. Isı, ses, tireşim vb cihazların uyarı xml değer dosyalarını database aktarımda, her türlü resim dosyasını databasede saklamak gerektiğinde kullanabilirsiniz. Gerisi hayal gücünüze kalmış.

 

DECLARE @xml XML;
CREATE TABLE Products(xmlCol XML)

INSERT Products
SELECT
CONVERT(XML, BulkColumn, 2)
FROM OPENROWSET (BULK 'C:\stok.xml', SINGLE_BLOB)Product
SELECT * FROM Products

--------------------------------------------------

CREATE TABLE dbo.Resimlerim
(ResimID int NOT NULL,
bmp varbinary(max) NOT NULL)
GO
INSERT dbo.Resimlerim
(ResimID, bmp)
SELECT 1,
BulkColumn FROM OPENROWSET(BULK'C:\test.bmp', SINGLE_BLOB) AS x
SELECT bmp
FROM Resimlerim

 

 

 

SQL Server 2005 : Lock, Blocking
Yazdir Yazdir

Veritabanları transaction işlemini gerçekleştirirken locking kullanır. Bu işlemin gerşekleşme süresince ilgili tabalolarda işlem yapılamaz. Bu süre transaction süresi kadardır. Bu süre zarfında işlemler kuyrukta bekler. Bu bekleme sürcine Blocking denir.

Açıklayıcı olması açısından öncelikli olarak blocking sürecinin nasıl oluştuğu ile ilgili bir örnek verelim.
Database üzerinde bir tablomuz olsun. Personel

Süreç
İşlem
Personel Tablosu işlemi için üzerinde transaction başlatılır.
begin transaction 
Personel Tablosu için üzerinde başka bir transaction daha başlatılır.
begin transaction 
Personel Tablosu üzerinde bir update veya insert işlemi çalıştırılır.
update Personel
set PersonelAd='test'
Personel Tablosu üzerinde select sorgusu çalıştırılır.
select * from Personel
Son select sorgusu bir önceki update commit veya rollback olana kadar block durumda bekler.
Blocklanmış tablo durumu

 
 
SQL üzerinde bloke olmuş kayıtları çekmek için aşağıdaki sorguyu kullanabiliriz.
SELECT pro.spid
,convert(char(12), db.name) db_name
, program_name
, convert(char(12), lg.name) login_name
, convert(char(12), hostname) hostname
, cmd
, pro.status
, pro.blocked
, login_time
, last_batch
, pro.spid
FROM      master..sysprocesses pro
JOIN      master..sysdatabases db ON pro.dbid = db.dbid
JOIN      master..syslogins Lg ON pro.sid = lg.sid
WHERE     pro.blocked <> 0 and pro.dbid = DB_ID('DatabaseAdı')
 

Proje ve Versiyonlama
Yazdir Yazdir

Projeler, beklenti ve ihtiyaçlar çerçevesinde doğmuş, gereksinimler ile bütünleştirilmiş, zamana ve şartlara göre yaşayan canlı organizmalardır. Yaşayan bu organizmaları teknolojiye ve gereksinimlere karşı ayakta kalmasını sağlamanın yolu porjelerde iterasyonlar uygulamaktır. Yani proje deyimi ile projeyi fazlara bölmeli, versiyonlamalar yapılmalıdır. Microsoft'un tamda bu noktada yaptığı şey budur. Windows 98'i çıkarmayıp 10 yıl Vista için uğraşmadılar. (Aşağıda Selçuk Erdem'in karikatürüne bir göz atmakta fayda var:))

 

 Anlatmak istediğim aşağıda Selçuk Erdem karikatründe farklı bir bakış açısıyla anlatılsada biraz daha profosyonel yaklaşım gerektiren hali.:)

 

 

Stored Procedur İsimlendirme
Yazdir Yazdir

 

Veritabanımızdaki stored procedur isimlerimiz, yapılan işi anlatacak olup dört başlık altında toplanmalı ve bu başlıklarla başlanmalıdır. Böylelikle her stored procedur görüntü listesinde grup olarak bir arada bulunmasını ve kolaylıkla bulunmasını sağlayacaktır. Bunlar;
  • Insert
  • Delete
  • Update
  • Select
 
  • SelectSehir
  • SelectSehirBySehirId
  • SelectIlce
  • SelectIlceByIlceId
  • InsertSehir
  • InserIlce
  • UpdateSehirBySehirId
  • UpdateIlceByIlceId
  • DeleteSehirBySehirId
  • DeleteIlceByIlceId

 

 

Projelerde Risk Analizi ve Yönetimi
Yazdir Yazdir

Merhaba,
    Hepimiz çalştığımız projelerde riski önceden görüp tedbirlerini almak isteriz diye düşündüm. Bu amaçla benim çok sık kullandığım risk analzi tablosunu incelemenizi öneririm. Tabiki bu tabloyu hazırlamakla iş bitmiyor. Başlıktan da anlaşılacağı gibi "Proje Risk Analizi ve Yönetimi". Yani kısaca Risk ve YÖNETİMİ.

Şayet 16 maddeden oluşan riskler yönetmekte zorlanılıyorsa. O zaman "Böl, Parçala YÖNET" metodunu kullanmanızı tavisye ederim. Bu da nasıl bir şey derseniz. Tabloda çarpandan (Olasılık * Etki) oluşan "Önem" kolonunua göre sort ediyorsunuz. Sonrasında ilk 10 kısımını ele alıyorsunuz. Halamı yönetilemiyor o zaman ilk 5. halamı yönetilemiyor. O zaman tabloda 5. madde risk olasılığı değerini %100'e doğru arttırmaya başlayın derim. :)

 Proje Risk Analizi Ve Yönetimi
  Risk  (1-100%) (1-10) (1-10)        
# Durum Sonuç Olasılık Etki Önem Hafifletici Etken Engelleme Tetikleyici İlgili Takım Rolü
1 Yeni Teknolojilerin hızı Müşteriyi Menun Etmeyebilir Proje kabul görmeye bilir 50% 7 3,5 Makine gücü arttırmak Kodlar review edilmeli, gerekirse sunucu ve istemci makinelerin donanım gücü arttırılmalı Proje Deploy Program Manager, Product Manager
2 Firma İş Akışı değişebilir Proje gecikebilir. 40% 7 2,8 Varolan kodlar güncellenebilir Bir sonraki adıma ertelemek, projeyi fazlara bölmek. Proje Geliştirilirken Program Manager, Product Manager
3 Sistemin cevap vermemesi Sistem son kullanıcı ve müşterilere hizmet veremeyebilir 20% 10 2 Proje Tecrübeleri, iş akışlarının yeniden gözden geçirilmesi Testlerin çoklu test yöntemiyle yapılması, proje fazlarında müşterinin bilgilendirilmesi. Proje Geliştirilirken Product manager, Program Manager
4 Satışların düşmesi ve yönetimin yeni bütçesinde projenin maliyetin düşürülmesi Proje ertelenmeli veya iptaledilmeli 20% 10 2 Projenin Bütçe / Kaynak planı daha önceden oluşturulmalı Proje Adımlara bölünmeli ve Bütçeye göre geliştirilmeli Proje maliyetinin ilk tanımıyla beraber Product manager
5 Projeden Program Managerın Ayrılması Proje gecikebilir. 25% 8 2 Dökümantasyonun düzgün olması, Dökümantasyonlar Firma tarafından onaylı olması ve Product Manager in dökümantasyonu onaylaması Proje Geliştirilirken Product Manager
6 Projeye Yeni Adam Eklenmesi Proje gecikebilir. 60% 3 1,8 Dökümantasyonun düzgün olması, Project Manager in uygulamaya hakim olması Project Manager tarafından bütün dökümantasyonun incelenmesi ve doğrulanması Proje Geliştirilirken Program Manager
7 Proje Takımının Bilgi Birikiminin Yetersizliği Proje gecikebilir. 30% 6 1,8 Proje Yöneticisinin tecrübesi Teknik olarak Dökümanlar toplanmalı ve bireysel bilgiler takıma aktarılmalı Proje Başlarken Program Manager
8 Analizin Unutulması Proje gecikebilir. 30% 6 1,8 Projenin Dökümanları daha detaylı incelenmeli Product Manager ile toplantı organize edilmesi Proje Geliştirilirken Program Manager, Product Manager
9 Projeden Adam Ayrılması Proje gecikebilir. 25% 7 1,75 Dökümantasyonun düzgün olması, Project Manager in uygulamaya hakim olması Project Manager tarafından bütün dökümantasyonun incelenmesi ve doğrulanması Proje Geliştirilirken Program Manager
10 Mimari Alt yapının problem çıkartması Proje gecikebilir. 25% 6 1,5 Proje Tecrübeleri Standart bir çözüm geliştirir Proje Geliştirilirken Program Manager
11 Analiz dışı isteklerin projeye dahil edilmek istenmesi Proje gecikebilir. 25% 6 1,5 Projenin Dökümanları daha detaylı incelenmeli Product Manager ile toplantı organize edilmesi Proje Geliştirilirken Program Manager, Product Manager
12 Analizin Yanlış Anlaşılması Proje gecikebilir. 30% 4 1,2 Projenin Dökümanları daha detaylı incelenmeli Product Manager ile toplantı organize edilmesi Proje Geliştirilirken Program Manager, Product Manager
13 Kullanılan controllerin Problem çıkartması Proje gecikebilir. 20% 5 1 Proje Tecrübeleri Standart bir çözüm geliştirir Proje Geliştirilirken Program Manager
14 Yeni teknolojiler (Framework 3.5,Sql Server 2008) kullanılması Proje gecikebilir. 10% 4 0,4 B planları hazırlanmalı ve teknolojiler daha iyi incelenmelidir. Teknoloji risklerini kategorize edip önem sırasına sokup bölmek ve ilgili analizleri yapmak Proje başlangıcı Program manager
15 Takımda Anlaşmazlıkların olması Proje gecikebilir. 10% 3 0,3 Dikey bölümler yazdırılması, Program Managerin anlaşmazlığı çözmesi Her kişi programın bir modülünü yazar, Program Manager kontrol yapar Proje Geliştirilirken Program Manager
16 Product Manager ile Anlaşmazlıkların yaşanması Proje gecikebilir. 10% 3 0,3 Program Managerin anlaşmazlığı çözmesi Anlaşmazlığın kaynağının bulunması Proje Geliştirilirken Program Manager, Product Manager

 

 

Başlarken
Yazdir Yazdir

"Yeterki siz yazın" diyerek ve bu yönde her türlü teknik altyapıyı hazırlayan ekip arkadaşım İzzet GÜNDÜZ'e teşekkürlerimi bir borç bilirim.

 

Copyright © 2008 - Serdar Kurtoğlu