NULL alanlar için sparse columns…

Posted by Zafer | Posted in SQL | Posted on 23-01-2009

SQl tablolarımızın bazı sütunlarında gereğinden fazla NULL degeri yer alıyorsa eğer , bu sütunlarda tululan NULL değerlerinin daha az yer kaplamasını sağlayabiliriz. Bunu sağlamak içinse sparse özelliğinden yararlanırız.

Sparse özelliğinin dikkatli kullanılması gerekmektedir. Eğer sparse olarak tanımladığımız sütundaki NULL değerler sütunda yer alan verilerden daha az sayıda ise bu durumda verilerimiz daha çok yer kaplayacaktır. Yani bu özelliği kullanmak isteğimizde sütundaki hücrelerin çoğu NULL değerlerden oluşmalıdır. Ayrıca sparse özelliği her veri tipi ilede kullanılamamaktadır.

yazgeliştir.com adresinde verilen karşılaştırmaya göre :
Read the rest of this entry »

SQL ‘de otomatik guid üretmek (Uniqueidentifier)

Posted by Zafer | Posted in Sağlık Net Adaptörü, SQL | Posted on 30-12-2008

SQL Server’da özellikle dağıtık bir veritabanı yapısı (merge replication kullanan tasarımlarda olduğu gibi) tasarlıyorsanız, uniqueidentifier tipini kullanmak istersiniz. Uniqueidentifier tipindeki kolonlarda default değeri NEWID fonksiyonuyla oluşturursunuz. NEWID ile oluşturulan GUID değerlerinin MAC adresi olan network kartlı makinelerde çakışma yapmaması garanti edilmiştir. Böylelikle veritabanları arasında satır aktarımlarında ID çakışmaları sözkonusu olmaz.
Read the rest of this entry »

Cannot insert explicit value for identity column in table ‘UsvsPaket’ when IDENTITY_INSERT is set to OFF

Posted by Zafer | Posted in SQL | Posted on 04-12-2008

Sql serverde oluşturduğumuz herhangi bir tablo içinde IDENTITY olarak oluşturulmuş bir alan varsa ve biz  buna manuel olarak veri eklemeye çalışırsak “Cannot insert explicit value for identity column in table ‘UsvsPaket’ when IDENTITY_INSERT is set to OFF” hatası ile karşılaşırız. Bu hatayı gidermek için sql cümlemizi aşağıdaki gibi düzenlememiz gerekir :

SET IDENTITY_INSERT tabloAdı ON
INSERT INTO tabloAdı .....
SET IDENTITY_INSERT tabloAdı OFF

bu sayede identity olan alana kendi isteğimiz veriyi ekleyebiliriz. Tabi eklediğimiz veriler identity alandaki değerler ile çakışmamalıdır.

“BETWEEN deyimi ile tarih aralığı sorgulama…”

Posted by Zafer | Posted in SQL | Posted on 25-11-2008

İki tarih arasındaki verileri sorgulamak için BETWEEN deyiminden yararlanabiliriz.  Bu konuda aklımıza takılan  soru genelde başlangıç ve bitiş tarihlerinin yani sınır şartlarınında değerlerdirmeye alınıp alınmadığıdır. BETWEEN ile ilgili sorgularımızda sınırdaki şatlar da değerlendirilir. Fakat bazen tarih aralığını sorgulayan bir fonksiyon ve ya sorgu yazdığımızda sınır şartlarının koşula dahil edilmediğini ve kullandığımız deyimin ya da sorgunun yanlış olduğunu düşünürüz. Fakat sorgumuz ve deyimimiz genelde dogrudur sadece biraz eksiktir. Genelde yaptığımız hatayı bir örnek ile göstermek istiyorum ;

Doğru ama eksik :

CREATE FUNCTION [tarihSorgula] (@baslangicTarih datetime,@bitisTarih datetime)
RETURNS TABLE AS RETURN
(
Select ... from .... where tarih between tarih @baslangicTarih and  @bitisTarih
)

Read the rest of this entry »

“Create Function failed because a column name is not specified for column 1…”

Posted by Zafer | Posted in SQL | Posted on 18-11-2008

Query Analyzer ile sorgu ifadelerinizi yazarken  bazen sum,count vb ifadelerde dönen sonuçların kolonlarına isim vermeyi  aşağıdaki örnekte oldugu gibi unutabiliriz.

SELECT ident_current('orders')

Bu gibi durumlarda dönen sonucumuz no column name adı altında bize gösterilir.  Fakat bu sql ifadesi oluşturacağımız bir fonksiyon içinde geçecekse , fonksiyonu oluştururken “Create Function failed because a column name is not specified for column 1.” hatası ile karşılaşırız. Yani oluşturacağımız fonksiyonlar bizden kolon isimlerini belirtmemizi isteyecektir.

Çok basit gibi görünen bu hata bazı anlarımızda çok vakit kaybetmemize neden olabilmektedir.

Aşağıda hatalı ve hatasız olmak üzere iki örnek bulunmaktadır ;

Read the rest of this entry »

SQL (Injection) Enjeksiyon Saldırıları & Korunma Yolları

Posted by Zafer | Posted in SQL | Posted on 14-11-2008

Sql sorgulama dilinde, kullandığımız parametre ve değişkenlere dikkat etmediğiz takdirde bazı güvenlik sorunlarının ortaya çıkmasına  sebep olabiliriz. Aşagıdaki linkte ve pdf dosyalarında oluşabilecek bu sorunların neler olduğundan bazıları ve korunma yöntemlerinden bahsedilmektedir.

sql saldırı ve korunma

sql saldırı ve koruma 2

Kaynak: http://www.infosecurenet.com,info@infosecurenet.com,Soner Eker

Rapor Tablolarında Satır Renkleri

Posted by Ömer | Posted in SQL | Posted on 10-11-2008

SQL Server Business Intelligence Development Studio  kullanarak bir rapor oluşturdunuz ve verileri sıralı şekilde  bir tabloda görüntüleyeceksiniz. Veritabanından veriler geldikçe tablo dolup taşacak ve sayfalarca raporunuz olacaktır belki de. Bu durumda görsellik de önemli olacak. Tablo satırlarının ardışık satırların farklı renkte olmasını sağlayabiliriz.
Read the rest of this entry »

” INSERT deyimi ile aynı anda birden fazla kayıt eklemek… “

Posted by Zafer | Posted in SQL | Posted on 05-11-2008

Bazı durumlarda veritabanına birden fazla kayıdı aynı anda ve tek bir  transactionda eklemek isteriz. Bu gibi durumlarda INSERT deyimi ile UNION ALL deyimini ortak kullanarak sorunun üstesinden gelebiliriz .

Kullanım şekli ;

INSERT INTO ogrenci (ogrNo,isim,soyisim)

SELECT 04233013,'zafer','uğur'

UNION ALL

SELECT 04233006,'fatmana','şentürk'

UNION ALL

SELECT 04233020,'sami','beyoğlu'

UNION ALL

SELECT 04233025,'yasin','derer'

gibidir.

Kayıt sayısının fazla olduğu durumlarda işlem süresinin daha da azalmasını sağlayacaktır.