Sql 2008′de Değişiklikleri Kaydetme Sorunu

Posted by Ömer | Posted in SQL | Posted on 15-05-2009

Sql 2008 ile birlikte gelen yeniliklerden biri de veritabanı ve tabloların yeniden düzenlendikten sonra kaydedilmesine izin verilmemesi olsa gerek. 2008 ile varsayılan olarak gelen bu özellik (yada sorun) sayesinde tabloları her ufak değişikliklerde bile yeniden oluşturmak yerine kısa bir işlemle aşabilirsiniz.
Read the rest of this entry »

Convert deyimi ile tarih format tipi…

Posted by Zafer | Posted in SQL | Posted on 17-02-2009

*** Tabloyu net görebilmek için üzerine tıklayınız.

Convert (datetime,’tarih’,formatTipi) fonksiyonunu kullanırken aklımda kalmayan format tipi için sürekli kitap ya da internetteki kaynaklara bakmak zorunda kalıyorum. Şimdi ise bu yazıyı yazarak bu dertten kurtulmak istiyorum, artık aklımda kalacağına inanıyorum.

SQL Server Diagramlar Üzerindeki İzin Sorunu İçin

Posted by Sami | Posted in SQL | Posted on 05-02-2009

Daha önce kendi blogumda yazmıştım ama bugün arkadaşlar bu hatayla karşılaşınca tekrar yazma ihtiyacı hissettim. Siz de ben gibi diagramlara erişirken

DATABASE DIAGRAM SUPPORT CAN NOT BE INSTALLED BECAUSE THIS DATABASE DOES NOT HAVE A VALID OWNER. TO CONTINUE FIRST USE FILE PAGES OF THE DATABASE DIALOG BOX OR USE ALTER AUTHORIZATION STATEMENT TO SET THE DATABASE OWNER TO A VALID LOGIN…

gibi bir hata alıyorsanız sebebi veritabanı üzerinde yeterli yetkiniz olmamasındandır. Çözümü basit.
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 :

  1. SET IDENTITY_INSERT tabloAdı ON
  2. INSERT INTO tabloAdı …..
  3. 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.

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 »

Sql geçiçi tablolar, truncate, insert ve bulkcopy hakkında…

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

Vereceğim bilgiler yüksek seviye olmasa da işe yarayacak bilgiler.
Örnekler üzerinden giderek Sql”de geçiçi tablolar, truncate, insert ve bulkcopy hakkında bilgi vereceğim.

Geçici Tablolar

Aşağıdaki kod ile Temp1 isminde geçici bir tablo oluşturduk.

  1. SELECT * INTO #Temp1 FROM uyeler

Aşağıdaki kod ile ise geçici tablomuzdaki verilere ulaşabiliriz.

  1. SELECT * FROM #Temp1

Aşağıdaki kod ile Temp2 isminde bir geçici tablo oluşturduk

  1. SELECT * INTO ##Temp2 from uyeler

Yukarıdaki örneklerde dikkat ettiyseniz birinde tek # diğerinde 2 # işareti var bunun anlamı
Sqlserver için tek # local çift # global anlamına gelir yani yarattığımız geçici bir tabloya sadece o pencere içinde ulaşmak için tek
bağlı olan her uygulamadan erişmek için ise çift ## işareti kullanırız.

  1. SELECT * FROM ##Temp2

Temp2′deki verileri listeleeriz.Geçici tablolar systemdatabases altında Temp Db”de oluşur

Geçici tablolarımızı silmek için kodunu kullanırız.

  1. DROP TABLE ##Temp2

Read the rest of this entry »

“Tabloları birleştirmek…”

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

SQL ‘de sorgu veya tablo sonuçlarını yatay ve düşey olarak birleştirebiliriz. Yatay birleştirmeler için JOIN ifadeleri kullanılırken ,dikey birleşimler için ise UNION deyimi kullanılır.

JOIN İfadeleri:



INNER JOIN :

İki tablo arasında birleştirme işlemi yaparken, tablolardan sadece birinde yer alan kayıt sonuçlarını görmek için kullanılır. Yani ana tabloda yer alan fakat yardımcı tabloda eşleştirmesi bulunmayan kayıtlar sorgu sonucunda gösterilmez.
Read the rest of this entry »

SQL 2005 ‘te hızınızı artırın

Posted by Zafer | Posted in SQL | Posted on 16-10-2008

Eğer Sql 2005 kullanmaktaysanız ve Sql 2008 ile birlikte gelen , kullanım kolaylığı sağlayan “intellisense” özeliğine sahip olmak istiyorsanız  “SQL Tool Belt” adlı programı yükleyerek hızınızı bir kat daha arttırabilirsiniz. Eklentiye bu adresten sahip olabilirsiniz.

“SQL Optimizer…” DISTINCT yerine EXISTS kullanımı

Posted by Zafer | Posted in SQL | Posted on 22-09-2008

Önerilmez

  1. SELECT DISTINCT product_id, name FROM   products pr, purchase pu
  2. WHERE  pr.product_id = pu.product_id

Önerilir

  1. SELECT product_id, name FROM   products pr
  2. WHERE EXISTS ( SELECT 1 FROM  purchase pr WHERE pr.product_id = pu.product_id)

Sorguda gelen kayıtlarda tekrarlı olanları görüntülememek için DISTINCT kullanılır. EXISTS ise bir alt
sorguda gelen kayıtlar içinde istenilenlerin olup olmadığını kontrol eder. DISTINCT, gelen sonuçlarda
tekrarlı olanları belirlemeden önce sıralama yaptığıdan verimsizdir ve bu yüzden de EXISTS tercih
edilmelidir.
Kaynak : SQL Tuning El Kitabı call 7/24

“SQL Optimizer…” IN yerine EXISTS kullanımı

Posted by Zafer | Posted in SQL | Posted on 22-09-2008

Önerilmez

  1. SELECT product_id, name FROM   products
  2. WHERE  product_id IN ( SELECT product_id FROM   purchases )

Önerilir

  1. SELECT product_id, name FROM   products pr
  2. WHERE EXISTS ( SELECT 1 FROM   purchases pu WHERE   pu.product_id = pr.product_id )

IN bir listede aranan verinin olup olmadığını kontrol eder. EXISTS sadece kayıtların varlığını kontrol
ederken, IN ise gerçek verileri kontrol eder. Alt sorgularda EXISTS daha iyi sonuçlar verdiğinden tercih
edilmelidir.

Kaynak : SQL Tuning El Kitabı call 7/24