bildirgec.org

mssql hakkında tüm yazılar

Veri Tabanı ve SQL Yazı Dizisi. Bölüm :1

admin | 25 December 2010 16:48

Bu yazı dizisinde uzun zamandır üzerinde çalıştığım SQL başvuru kaynağını sizlerle paylaşacağım, tamamen SQL üzerine kurulu olan yazı dizisini parça parça düzenleyerek sunacağım, ilk bölümde Veri, Veritabanı, Normalizasyon gibi konulara değinerek hazırlık yapacak ardından da SQL üzerine diğer yazıları yayınlayacağım.

Veri

Veri (Data) herhangi bir konudaki en temel işlenmemiş bilgi topluğudur, örneğin bir bireyin sicil kartı bilgileri içerisinde bireyin Adı bir veridir bunun gibi Soyadı,Kimlik Numarası, Öğrenci numarası, Hesap numarası gibi daha yüzlerce örneğini verebileceğim bilgi türüne veri (data) adı verilir Veriler genellikle kendi başlarına işe yaramazlar örneğin bir veri bankasından alınan tek bir Veri bize pek bir bilgi sağlamazken bu veriye bağlı diğer verilerle birlikte oldukça geniş bir içerik sağlayabilir, Bir öğrencinin Öğrenci numarasından o öğrenciye ait Ad,Soyad,Yaş,Adres ve Ders notlarına ulaşılabilir, bu nedenle her ne kadar Veri tabanının vazgeçilmez öğesi olsa da verinin derlenip harmanlanmamış hali bizlere pek bir şey ifade etmez.
Veri doğru yerde ve doğru zamanda bir çok sorunu çözmekte eşsiz bir araçken yanlış kişilerin ellerinde korkunç bir silaha dönüşebilen oldukça değerli bir öğedir bu nedenle kuruluşlar veri güvenliği konusunda küçümsenemeyecek yatırım yapmak zorundalar kimi zaman veri girişinin malihyeti bu verinin güvenliğini sağlamak için ayrılan bütçeden daha az olabilmektedir.

MSSQL Log Temizleme

tayfurboler | 17 April 2009 11:00

MSSQL Log Temizleme,

Bildiğiniz gibi Mssql de datalar .mdf ve .ldf dosyalarında tutulur.
.mdfde datalarınız, .ld de ise loglarınız tutulur.Ama bu log dosyanız
zamanla şişer ve sorun olmaya başlar.Aşırı büyük log dosyasının
dezavantajları sql serverınızın performansında düşüşler başlar. Ve
backuplarınızın boyutları büyümeye başlar.

Mssql de eğer standart bir kurulum yaptıysanız datalarınız
c:Program FilesMicrosoft Sql ServerMSSQL.1MSSQLData
klasörünün altında tutulur.Önce aşağıda vereceğim kodu çalıştımadan
bu klasörün içine gidip .ldfuzantılı dosyanın boyutuna bakın ,
bir yere not edin. Aşağıdaki kodu çalıştırdıktan sonra gidip tekrar
bakın aradaki farkı göreceksiniz.

MsSQL de PK_Constraint halinde Insert’e devam etmek

meliheran | 05 April 2009 18:14

A tablomuzda ISIM diye bir kolonumuz var ve biz bir kaynaktan bir çok ismi bu tabloya ekleyeceğiz. İşlemi başlattık ve PK_Constraint hatası aldık işlem ROLLBACK edilip insert iptal edilir! İlk aklımıza gelen çözüm ise ..where not exists(.. şeklinde bir kod ile satır ekleyeceğimiz tabloda eklenecek olanın kontrolünü yapıp eğer yok ise satırı ekletmektir.Ancak bu milyona yakın kayıtlarda çok düşük bir performans sergiler.

Çözüm;Milyonlarca kayıdımı A tablosuna ekle ancak aynı isimlerin olması halinde hatayı gözardı et ve o ismi atla diğerine geç.

İşte bunu yapabilmek için PK olan kolonun IGNORE_DUP_KEY özelliğini ONhaline getirmektir.Normal şartlarda PK olan bir alanın bu özelliğini değiştiremeyiz. Oyüzden ilgili PK alanı için bir dizi değişiklik yapacağız.

  • ISIM alanının PK sını kaldırmalıyız. (Remove Primary Key),
  • PK’i kaldırmamızla Uniqued haldeki Clustered Indexde kalkmış olur.
  • Yani şuan bir insert işlemi yaparsak kayıtları çiftlemiş oluruz üstelik indeximizide kaybettik. Bunu düzeltmek ve kayıt kirliliğine izin vermemek , unique/tekilliği korumak için Index menüsünden ilgili tablonun alanı için (örneğin ISIM alanına) Uniqued , Clustered index ekliyoruz.

    Böylece sonuç olarak ilk halde PK olan bir alan ikinci durumda PK değildir ama halen unique/tekil kayıt saklar (hatta halen tekil olmayan bir kayıt işleminde hata verir) ve ilk durumdaki gibi clustered indexe sahipdir.
    İşte ancak bu durumda ISIM alanının IGNORE_DUP_KEY özelliğini ON olarak değiştirebiliriz. Yani kayıt çiftlemesindeki Error mesajını gözardı et demiş olucaz.

    Bunu yapmak içinde QUERY ekranında,

    1
    2
    3
    4
    5
    6
    7
    8
    ALTER INDEX IndexIsmi ON
    dbo.TabloIsmi
    REBUILD WITH(IGNORE_DUP_KEY = ON )
    --Default da OFF dur ve buda PK_Constraint hatası verip
    --Insert işlemini Rollback yapmasına neden olur
    --veya rebuild yerine
    SET (IGNORE_DUP_KEY = ON ) ;

    çalıştırırız.Artık bundan sonra yapacağınız insert işlemlerinde tabloda aynı kayıt varsa PK_Constraint hatası yüzünden işlem sonlandırılıp tüm insert rollback edilmez , ilgili satır atlanır ve kayıt işlemine devam edilir.

Asp ile SQLden output alma ve Command kullanımı …

admin | 18 March 2009 12:35

Henüz SP ( stored procedure ) ile yeni ilgililer yada orta düzey projeler için kullanan birçok kişinin zaman içerisinde sıkıntı çektiği yada çektiğini düşündüğüm birşeydir output okuma. Toplam kayit dönüşlerinde yada insert sonrası bilgi dönüşlerinde update sonrasi bilgi dönüşlerinde ve daha birçok noktada, çoğu kez kullanılması icab eden fakat SP ile yeni ilgilenenlerin kafasini karıştıran bir durumdur SP output …

Öncelikle kullanacağımız SP ‘nin kodlarını paylaşarak başlamak isterim …

SP ( Stored Procedure ) kodları :

1
2
3
4
5
6
7
8
9
CREATE PROCEDURE SP_OUTPUT_SAMPLE
@GET_ID int,
@OUT_TP int = Null OUTPUT,
@OUT_TX int = Null OUTPUT
AS
BEGIN
SELECT @OUT_TP = Count(REG_ID) FROM MESSAGES WHERE USER_ID = @GET_ID
SELECT @OUT_TX = Count(REG_ID) FROM INVITES WHERE USER_ID = @GET_ID
END

SQL de yüksek performans ile …

admin | 16 March 2009 15:24

Denemeler sonucu elde ettiğim ve kullanımı da oldukça kolay olan bir stored procedure stored procedure. Öncelikle belirtmek isterim ki MsSQL platformuna ait bu stored procedure veri sayfalamanızda, veri listelemenizde, son kayıtları getirmenizde kullanabileceğiniz bir sp olup performans seviyesi sizin de denemeleriniz sonunda görebileceğiniz gibi oldukça yüksektir.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
CREATE PROCEDURE SP_RESULT
(
@Tables varchar(1000),
@PK varchar(100),
@Sort varchar(200) = NULL,
@PageNumber int = 1,
@PageSize int = 10,
@Fields varchar(1000) = '*',
@Filter varchar(1000) = NULL,
@Group varchar(1000) = NULL)
AS
IF @Sort IS NULL OR @Sort = ''
SET @Sort = @PK
DECLARE @SortTable varchar(100)
DECLARE @SortName varchar(100)
DECLARE @strSortColumn varchar(200)
DECLARE @operator char(2)
DECLARE @type varchar(100)
DECLARE @prec int
IF CHARINDEX('DESC',@Sort)>0
BEGIN
SET @strSortColumn = REPLACE(@Sort, 'DESC', '')
SET @operator = '<='
END
ELSE
BEGIN
IF CHARINDEX('ASC', @Sort) = 0
SET @strSortColumn = REPLACE(@Sort, 'ASC', '')
SET @operator = '>='
END
IF CHARINDEX('.', @strSortColumn) > 0
BEGIN
SET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))
SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn))
END
ELSE
BEGIN
SET @SortTable = @Tables
SET @SortName = @strSortColumn
END
SELECT @type=t.name, @prec=c.prec
FROM sysobjects o
JOIN syscolumns c on o.id=c.id
JOIN systypes t on c.xusertype=t.xusertype
WHERE o.name = @SortTable AND c.name = @SortName
IF CHARINDEX('char', @type) > 0
SET @type = @type + '(' + CAST(@prec AS varchar) + ')'
DECLARE @strPageSize varchar(50)
DECLARE @strStartRow varchar(50)
DECLARE @strFilter varchar(1000)
DECLARE @strSimpleFilter varchar(1000)
DECLARE @strGroup varchar(1000)
IF @PageNumber < 1
SET @PageNumber = 1
SET @strPageSize = CAST(@PageSize AS varchar(50))
SET @strStartRow = CAST(((@PageNumber - 1)*@PageSize + 1) AS varchar(50))
IF @Filter IS NOT NULL AND @Filter != ''
BEGIN
SET @strFilter = ' WHERE ' + @Filter + ' '
SET @strSimpleFilter = ' AND ' + @Filter + ' '
END
ELSE
BEGIN
SET @strSimpleFilter = ''
SET @strFilter = ''
END
IF @Group IS NOT NULL AND @Group != ''
SET @strGroup = ' GROUP BY ' + @Group + ' '
ELSE
SET @strGroup = ''
EXEC(
'
DECLARE @SortColumn ' + @type + '
SET ROWCOUNT ' + @strStartRow + '
SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
SET ROWCOUNT ' + @strPageSize + '
SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
'
)

SQL Case kullanımı (ASP)

admin | 16 March 2009 13:24

Birçoğumuz oluşturduğumuz veritabanı içeriklerini farkında olmadan yanlış hazırlayıp performansımızı düşürsekde birçoğumuzda kod yazarken aynı hatayı yapmaktayız. Mesela bir profil sayfasını görüntülerken kimi cinsiyet için nvarchar data tipini kullanırken kimi ise bit data tipini kullanır. Bit ( Evet / Hayir yada True / False ) kullandığımız veritabanına göre sorgusu değişse de biz kod yazarken ki sıkıntısıyı ele alacağız. Profil sayfasını görüntülerken if sorgusu içine alır eğer şöyle ise böyle yaz böyle ise böyle yaz deriz. Fakat kullandığımız platform ( ASP ‘yi ele aliyorum. ) SQL kadar hızlı ve performanslı çalışmamaktadir. Eğer işi SQL’e yaptırırsak performansı arttırmış olacağız. Şöyle ki ;

a’dan z’ye internet sitesi kurulumu

Pinhani | 24 January 2009 12:37

adan zye internet sitesi yapımı
adan zye internet sitesi yapımı

Öncelikle en baştan başlayalım:

Bir internet sitesi oluşturmak için ilk olarak bu siteye ulaşılmasını sağlayacak bir alan adına(domain) ve sitenizin dosyalarını barındırabileceğiniz bir web alanına(hosting) sahip olmanız gerekiyor.

alan adı
alan adı

1-Alan adı(domain) ne demek?
alan adı sizin internetteki adresinizdir. örneğin bildirgec.org gibi. kurduğunuz bir websitesine ulaşılması için alan adı mutlaka gereklidir. alan adınız sitenizin internetteki kimliği olacaktır.

2-alan adı nasıl alınır?
alan adları yıllık periyotlarla kiralanarak kullanılır. nasıl alan adı alınacağına ve yönetileceğine dair şuradan bilgi edinebilirsiniz.

3-Web Alanı nedir?
web alanı sitenizi internet üzerinde yayına açmak için sitenizin dosyalarını yükleyeceğiniz alandır. bu alanda uzmanlaşmış firmalar tarafından yine aylık veya yıllık olarak kiralanan bu alana dosyalarınızı yükler ve erişime açarsınız.

4-hosting nedir?
hosting web sitenizi koyacağınız web alanının

hosting
hosting

sağlanması hizmetidir. bunun için iyi özellikte ve çok hızlı internet bağlantısı ve altyapısına sahip bilgisayarlar gerekir. bu bilgisayarlara sunucu denir. özel olarak bu sunucuların konulduğu ve bakımının yapıldığı yerlere datacenter denir.

Gerçeğe Yakın Test Verileri Yaratın

kumpetan | 09 February 2008 11:26

Web projeleri test aşamasında test verilerine ihtiyaç duyuyorlar. Bu projenin gerçeğe yakın verilerle nasıl çalıştığını görüntülemek ve yüksek veri adetlerinde sistemin nasıl cevap verdiğini izlemek için gerekiyor.

MySQL, MSSQL, PostgreSQL veya başka bir veritabanı kullanıyorsanız da otomatik test verisi yaratan yazılımlar oldukça işinize yarayacaktır.

En popüler test verisi yaratacıları bu adreste toplanmış.

veritabanı bağlantı dizeleri

fireelf | 01 February 2008 16:50

Programcıysanız yada veritabanı uygulamalarına kenarından kösesinden bulaştıysanız bilirsiniz. Herhangi bir programlama dili ile herhangi bir veritabanına ulaşmak için bir bağlantı kodu yazılır.

Bağlanmak istediğiniz veritabanı için nasıl bir bağlantı dizesi yazacağınızı bilemediğiniz durumlarda Connection Strings sitesi yardımınıza koşuyor.

Site oldukça geniş içerikli ve bağlantı dizeleri 3 başlık altında toplanmış.

veritabanı sunucuları

  • SQL Server
  • SQL Server 2005
  • SQL Server 2005 Compact Edition
  • Oracle
  • MySQL
  • Interbase
  • IBM DB2
  • Sybase
  • Informix
  • Ingres
  • Mimer SQL
  • Lightbase
  • Postgre SQL
  • Paradox
  • Firebird
  • AS/400 (iSeries)
  • Pervasive
  • SQLBase
  • Progress
  • Caché
  • Teradata
  • VistaDB

veri dosyaları

  • Excel 2007
  • Excel
  • Textfile
  • Access 2007
  • Access
  • Visual FoxPro / FoxPro 2.x
  • DBF / FoxPro
  • SQLite
  • Filemaker

diğer

  • MS Project
  • Active Directory
  • Exchange
  • Lotus Notes
  • DSN
  • UDL
  • Index Server