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 »

Microsoft SQL Server, Error: 916

Posted by Sami | Posted in SQL | Posted on 29-04-2009

The server principal “username” is not able to access the database “databasename” under the current security context. (Microsoft SQL Server, Error: 916)

Hatası sizi de delirttiyse üzülmeyin. Çözümü şu şekilde:

Read the rest of this entry »

Veritabanı sürüm yükseltme problemi - Sql Error:3415

Posted by Ömer | Posted in SQL | Posted on 16-04-2009

Sql sürümlerinin yükselmesi nedeniyle alt sürümlerde oluşturulan veritabanları üst sürümlere attach edildiğinde “Error: 3415 - database cannot be upgraded because it is read only or has read only files…” gibi bir sorunla karşılaşabiliriz. Her ne kadar “veritabanı readonly değil ki zaten” diye düşünsek de bu sorun veritabanını attach etme haklarına sahip olunmamasından da kaynaklıdır.
Bu sorunu şunları yapmakla çözebiliriz.
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 »

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 SQL, Sağlık Net Adaptörü | 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 :

  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.

“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 :

  1. CREATE FUNCTION [tarihSorgula] (@baslangicTarih datetime,@bitisTarih datetime)
  2. RETURNS TABLE AS RETURN
  3. (
  4. SELECTFROM …. WHERE tarih BETWEEN tarih @baslangicTarih AND  @bitisTarih
  5. )

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.

  1. 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 »