Aylık arşivler: Mart 2008

SQL’de HTML Formatında Sorgu

BCP programı, Import / Export Wizard, SQL Server 2000’deki Data Transformation Services (DTS) ve SQL Server 2005’teki SQL Server Integration Services araçlarını kullanarak SQL Server içerisinde html formatında data çekilebilir. Aslında SQL Server’de bu tür formatta verilerin çekilmesinin Reporting Services aracılığıyla yapılması daha mantıklıdır. Fakat bu yazıda Reporting Services’i kurmadan bir sorgunun sonucunu html biçiminde nasıl dışarı veririz onu örneklendireceğiz. Okumaya devam et

Bir Kullanıcının Yetkilerini Başka Kullanıcıya Kopyalamak

SQL Server’de bir kullanıcıya verdiğimiz yetkileri başka bir kullanıcıya nasıl kopyalayabiliriz. T-SQL’de bunu doğrudan yapabileceğimiz bir komut yapısı bulunmamaktadır. Her defasında her kullanıcı için GRANT ve DENY ifadelerini kullanarak manual olarak aynı yetkilerin verilmesi gerekir. Veya Management Studio veya Enterprise Manager üzerindeki Generate Script bölümü kullanılarak veritabanına ait script kodları oluşturulur. Orada ilgili kopyalama ve değiştirme işlemi yapılır. Bu yazıda nasıl bir script yazılarak bu işlemin daha kolay yapılacağını örneklendireceğiz. Okumaya devam et

SQL’den Excel’e, Excel’den SQL’e Aktarım

SQL Server sahip olduğu Export/Import aracıyla diğer veritabanlarına göre bir adım önde diyebiliriz. SQL Server üzerinde çalışırken sorgu sonucunu Excel formatında dışarı çıkarmak her zaman ihtiyaç duyulan bir durum olmuştur. Excel’de SQL Server’e import veya ters yönde export işlemi için en çok kullanılan yöntemler SQL 2000’de Data Transformation Services (DTS), SQL 2005’te SQL Server Integration Services (SSIS) ve her iki sürümde Bulk Copy (BCP) araçlardır. Bu araçların özelliği grafiksel ortam sunmaları ve genellikle Job’lar aracılığıyla çalıştırılıyor olmasıdır. DTS, SSIS ile nasıl yapılacağı kolay bir işlemdir. Bu yazıda BCP ve farklı T-SQL alternatiflerini inceleyeceğiz. Okumaya devam et

XML Formatını Kullanarak Metni Bölmek (String Split)

SQL Server üzerinde programlama yaparken metinleri ayrıştıran split fonksiyonunun T-SQL’de olmayışının eksikliğini hep hissetmişizdir. Bir metni bölmenin birçok yöntemi olsa da hepsinin mantığı döngü kurup metin içerisinde virgül gibi bir ayıraçın konumu bularak her virgül arasındaki değeri listelemektir. SQLTeam’da denk geldiğim aşağıdaki yöntemin daha hızlı olduğu ve pratik olduğunu düşünüyorum.

IF OBJECT_ID('dbo.Split') IS NOT NULL
    DROP FUNCTION dbo.Split

GO
CREATE FUNCTION dbo.Split(@data NVARCHAR(MAX), @delimiter NVARCHAR(5))
RETURNS @t TABLE (data NVARCHAR(max))
AS
BEGIN

    DECLARE @textXML XML;
    SELECT    @textXML = CAST('
dbo şemasına altında oluşturulan bu fonksiyonu kullanalım.
[sql]DECLARE @text NVARCHAR(max)
SELECT @text = 'C#, VB.NET, SQL Server, AJAX'

SELECT * FROM dbo.Split(@text, ',')

C#
VB.NET
SQL Server
AJAX

SQL Server’de Neden “Sayılar” Tablosuna İhtiyaç Duyarız

SQL Server belli sayı aralığında işlem yapmak için genellikle while döngüsü kullanılır. Oysa elimizin altında ardışık sayıların bulunduğu bir tablo bulunursa her defasında while ile sözkonusu aralıktaki sayıları bulmaktansa basit Join işlemleriyle başı ve sonu verilmiş tarihsel, sayısal ve metinsel bir aralık oluşturulabilir. Bu yazıda böyle bir tablonun nasıl oluşturulacağı ve ne tür durumlarda kullanabileceğimizi örneklendireceğiz. Bu çalışmanın T-SQL ile ilgili iyi bir egzersiz olacağını düşünüyorum. Okumaya devam et

SQL Server’de Ne Zaman Defrag Yapmalıyız

Fragmentation (parçalama) kavramı bilgisayar biliminde bellek, disk gibi kaynaklar üzerindeki birimlerin düzensiz parçalar (fragment) haline dönüşmesi ve bunun sonucunda düzenli boş alanın azalmasıdır. Dağılmış bu parçaları birleştirme işlemine defragmentation (birleştirme) denilir. SQL Server’da uzun süre veritabanı üzerinde yapılan silme, güncelleme, ekleme işlemleri sonucunda veritabanı dosyasında data veya index kayıtları arasında boş alanlar oluşur. Boş alanlar birbirleriyle ilişkili dolu kayıtların arasında olduğu için herhangi bir kayda erişme durumunda dağılmış kayıtlar arasında çok dolaşılacağından ciddi zaman kaybedilmektedir. Veritabanı dosyasındaki boş ve dolu alanları bir tarafa toplayıp dosyayı daha ekonomik, ergonomik kullanmak için belli dönemlerde defragmantasyon yapmak gerekir. Okumaya devam et

SQL Server Programlama ve Yönetim İpuçları – II

Daha önce yazdığımız ipuçlarına ek olarak bu yazıda aşağıdaki ipuçlarını vereceğiz.

  • SQL Server servisi her çalıştığında bazı komutları nasıl çalıştırabiliriz.
  • SQL Server Enterprise Management konsolde açılmıyor.
  • “IS NULL” ve “= NULL” arasındaki fark nedir.
  • COALESCE(), ISNULL() ve NULLIF() fonksiyonlar arasındaki fark nedir.
  • NEWSEQUENTIALID() ve NEWID() arasındaki fark nedir.
  • TRUNCATE ile DELETE arasındaki fark nedir.
  • T-SQL aracılığıyla uzaktan erişim nasıl açılır/kapatılır.
  • Veritabanı dosyalarının büyüklüğünü her gün mail ile nasıl alabilirim.
  • İki saat arasındaki farkı saat olarak yazdırmak

Okumaya devam et