Aylık arşivler: Nisan 2006

Veritabanı nesneler hakkında bilgi almak

SQL Server veri tabanı nesneler hakkında bilgi almak, metadata sorgulamak, öğrenmek

Database Management System-DBMS(Veritabanı Yönetim Sistemleri – VTYS)’larda veritabanının sahip olduğu nesneler hakkında bilgi almak, metadalarını(veri nesneleri hakkında veri tablosu) sorgulamak için bazı yöntemler sunulur. Bunlardan bir tanesi ANSI_SQL standartı olan INFORMATION_SCHEMA ile başlayan metadata viewleri diğer yöntem ise sistem tablolarıdır. Bu bilgiler, bir uygulamanın database katmanı için kodları generate etmekte kullanıldığı gibi SQL Injection gibi kötü niyetler için de kullanılmaktadır. Ayrıca database üzerinde yeni bir nesne oluşturulacağı zaman onun önceden var olup olmadığını kontrol etmek veya nesneyi silmeye çalıştığımızda gerçekten veritabanında öyle bir nesnenin olduğundan emin olmak için veritabanının metaverisini sorgulamak işlemlerin doğru sonuçlanması açısından önemlidir.
SQL Server’da kullanılan metadata viewleri şunlardır;

    CHECK_CONSTRAINTS,
    COLUMN_DOMAIN_USAGE
    COLUMN_PRIVILEGES
    COLUMNS
    CONSTRAINT_COLUMN_USAGE
    CONSTRAINT_TABLE_USAGE
    DOMAIN_CONSTRAINTS
    DOMAINS
    KEY_COLUMN_USAGE
    PARAMETERS
    REFERENTIAL_CONSTRAINTS
    ROUTINE_COLUMNS
    ROUTINES
    SCHEMATA
    TABLE_CONSTRAINTS
    TABLE_PRIVILEGES

Okumaya devam et

Unique Constraint’in olmadığı mükerrer kayıtlar

Önceki yazıda mükerrer eden kayıtları sahip oldukları identity değeri sayesinde silebiliyorduk. Peki Sql Server’daki bu tabloda kayıtları birbirinden ayıracak herhangi bir Primary Key veya Unique Constraint yoksa kayıtları nasıl sileceğiz. L_User isimli tablosunda kayıtları şu şekilde durduğunu varsayalım.

Okumaya devam et

Postback işleminde Asp.Net kontrolünü disable etmek

Özellikle yeni bir kaydın yapılacağı sayfalarda KAYDET butonuna birden fazla tıklandığı zaman veritabanında mükerrer kayıt oluşmaktadır. Bunu engellemek için ASP.NET öncesi teknolojilerde submit butonu gibi formu submit eden kontrolü JavaScript yardımıyla önce disable edip ardından formu submit ediyorduk.
Aynı mantığı ASP.NET server kontrolleri için de uyguladığımızda kontrolün disable olduğunu ancak postback işlemini gerçekleştirmediğine şahit oluruz. Event metodu verilmiş bir buttonu aşağıdaki gibi kodlayalım;

Okumaya devam et

Bir kolonu iki kolon olarak özetlemek

SQL Server’da bir kolonda bulunan dataları belli koşula göre iki kolon şeklinde ifade etmeye çalışalım. Bunun için güzel bir örnek olarak tüm alış, satış, müşteri iaderlerin tutulduğu bir tabloyu düşünelim. HAREKET isimli bu tabloda hareketleri birbirinden ayırmak HareketTip isminde bir kolon kullanacağız. Bu kolonda “A”, alış, “S”, satış anlamına gelmektedir. Tabloda yıllara göre hareket özetleri verilmiştir.

CREATE TABLE [dbo].[HAREKET](
	[HareketId] [int] IDENTITY(1,1) NOT NULL,
	[HareketTip] [char](1) COLLATE Turkish_CI_AS NULL,
	[Yil] [int] NULL,
	[Adet] [int] NULL
) ON [PRIMARY]

Örnek olarak aşağıdaki verileri girelim.

HareketId HareketTip Yil Adet
1 A 2001 10
2 A 2001 20
3 S 2001 5
4 S 2002 4
5 A 2002 14

Okumaya devam et