Etiket arşivi: sql server 2008

SQL Server 2008 “Saving changes is not permitted” Hatası ve Çözümü

Eğer sizde oluşturduğunuz tabloyu düzenleyemiyor ve aşağıdaki gibi hata alıyorsanız yazının devamını okumaya devam edin.

Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes to a table that can’t be re-created or enabled the option Prevent saving changes that require the table to be re-created.

Menüden Tools > Options yolunu izledikten sonra karşınıza Options penceresi açılacak. Oradan Designers sekmesinin altında Table and Database Desingers‘ı bulun ve “Prevent saving changes that require table re-creation“daki checkboxın işaretini kaldırın ve yaptığınız bu değişikliği “OK” butonuna basarak kaydedin.

MS SQL Veri Tipleri

Bu yaşıma kadar bütün web, mobil ve masaüstü uygulamalarımda MySQL kullanmış biri olarak hiç aklıma bir gün MS SQL kullanacağım aklıma gelmezdi. Bir üstadım bana yazılımcının dili olmaz derdi, demek ki yazılımcının veri tabanıda olmaz.

Bütün veri tabanlarında veri tipleri neredeyse aynı ama bir kaç farklılıklar ve değişik veri tipleride yok değil. Bana lazım oldu, sizede olabilir.

Tam Sayı ve Kesirli Sayı Veri Tipleri;

  • BigInt – 8 bayt yer kaplar ve en geniş aralığı olan sayısal veri tipidir.
  • Int – 4 bayt yer kaplar ve en çok kullanılan sayısal veri tipidir.
  • Smallint – 2 bayt yer kaplar.
  • Tinyint – 0-255 arasında 1 bayt yer kaplar.
  • Bit – 0 veya 1 değerini alır True yada False olarak kullanılır.
  • Decimal – Ondalık veya tam sayıları tutar. Genelde ondalık sayı olduğunda kullanılır.
  • Money – Bellekte 8 byte yer kaplar ve parasal değerleri tutmak için kullanılır.
  • SmallMoney – 4 bayt yer kaplar ve küçük miktardaki parasal değerleri tutmak için kullanılır.
  • Real – Hassas değerli ondalıklı sayıları tutar. Boyutu en büyük olan kesirli sayı tipidir.
  • Float – Bu veri tipi de real gibi hassas ondalıklı veri tiplerini tutar. Ancak boyutu Real’in yarısı kadardır.

Tarih Veri Tipleri;

  • DateTime – 1 Ocak 1753 ile 31 Aralık 9999 tarihleri arasında veri alır. Bellekte 8 byte yer kaplar.
  • DateTime2 – 1 Ocak 0001 ile 31 Aralık 9999 tarihleri arasında veri alır. Bellekte 8 byte yer kaplar ve 100 nano saniye hassasiyetinde tarih tutabilir.
  • SmallDateTime – 1 Ocak 1900 ile 6 Haziran 2079 tarihleri arasındaki verileri alır.
  • Date – 1 Ocak 0001 ile 31 Aralık 9999 tarihleri arasında veri alır. Ancak sadece tarih verisini tutar.
  • Time – 100 nano saniye hassasiyetinde saat verilerini tutar.
  • DateTimeOffset – Normal datetime aralığında veri alır ek olarak bölgeye bağlı olan saat farkını da tutar.

Unicode Desteği Olmayan Karakter Veri Tipleri:

  • Char – En fazla 8000 karakter alabilen ve girilecek verinin uzunluğu belli olduğunda kullanılır. Unicode desteği yoktur.
  • VarChar – Bu da char gibi en fazla 8000 karakter alabilen ancak girilecek verinin uzunluğu belli olmadığında kullanılır. Unicode desteği yoktur.
  • VarChar(Max) – En fazla 2 GB boyutuna kadar karakter verisi alır. (Max) bölümüne sayısal değer yazarsak VarChar veri tipinin maksimum uzunluğu o sayı kadar olur. Unicode desteği yoktur.
  • Text – En fazla 2,147,483,647 karakter uzunluğunda değer alabilen veri türüdür. Unicode desteği yoktur.

Unicode Desteği Olan Karakter Veri Tipleri:

  • Unicode nedir ? Bilgi İçin (http://www.unicode.org/standard/translations/turkish.html)
  • NChar – En fazla 4000 karakter tutan ve Unicode desteği olan veri türüdür ve gireceğimiz karakter sayısı belli ise bu kullanılır.
  • NVarChar – En fazla 4000 karakter alır ve Unicode desteği olan veri türüdür ayrıca gireceğimiz karakter sayısı belli olmadığında kullanılır.
  • NVarChar(Max) – En fazla 2 GB boyutuna kadar karakter verisi alır. (Max) bölümüne sayısal değer yazarsak VarChar veri tipinin maksimum uzunluğu o sayı kadar olur. Unicode desteği vardır.
  • NText – En fazla 2,147,483,647 karakter uzunluğunda değer alabilen veri türüdür. Unicode desteği vardır.

Binary Veri Tipleri:

  • Sql’de dosyaları saklamak için kullanılır.Türleri şunlardır;
  • Binary – En fazla 8000 bytelık veri saklar.
  • VarBinary – En fazla 8000 bytelık veri saklar ve girilecek byte miktarı değişken olduğunda kullanılır.
  • VarBinary(MAX) – En fazla 2 gb boyutunda veri alabilir. (MAX) değerine 2 GB’dan az olmak şartı ile boyut belirtebiliriz.
  • Image – Grafik nesneleri için kullanılmaktadır.

Diğer Veri Tipi Çeşitleri ;

  • Sql_Variant – Girilecek olan verinin tipi belli olmadığında kullanılır. Kısacası tüm türleri kapsayan genel veri türüdür.
  • XML – Xml verilerini saklamak için kullandığımız veri türüdür.
  • Hierarchyid – Bir hiyerarşi içerisinde olan yapıları saklamak için kullanılılır.
  • Geometry – X ve Y eksenindeki koordinat bilgilerini tutar.

Özel İfadeler;

  • Primary key; Oluşturulacak olan sütunun içindeki verinin o sütun içerisinde benzersiz olmasını sağlar.
  • Identity; Belirli bir sayıdan başlayıp, belirlediğimiz aralığa göre artan veya azalan bir şekilde sayısal değer üretir. Genellikle primary key ile birlikte kullanıp kimlik numarası (id) oluşturulur.
  • Default; Kullanıcı tarafından sütunda veri belirtilmeden SQL Server tarafından otomatik olarak verilen değerlerdir. Örneğin eleman tablosunda şirket sütunu olsun ve herkes aynı şirkette olduğundan bu bilgi default ile otomatik verilebilir.
  • NULL / NOT NULL ; Null kavramı boş anlamına gelmektedir. Eğer bir sütunda null olarak belirlemişsek içeriğine bir şey yazmadan dahi tablomuza kayıt ekleyebiliriz. Ancak Not Null olarak belirlersek içeriğine aldığı veri tipinden kayıt girilmesi zorunludur. Yoksa verileri kaydetmez ve hata alırız.
  • Unique ; Primary key mantığındadır. Bir tablodaki sütuna sadece tekil bilgi girilmesini sağlar. Primary key ve Unique birlikte kullanılmaz.