Aylık arşivler: Mart 2014

Windows Server 2003 R2’den Windows Server 2012 R2 Migration (Yükseltme) İşlemi

Şirketimizdeki artık ıskartaya çıkması gereken Windows Server 2003 R2’yi Windows Server 2012 R2’ye migration işlemi sistem tarafında ne kadar köreldiğimi anlamama yardımcı oldu.

Migration işlemini nasıl yaptığımı soracak olursanız birinci ağızdan aşağıdaki linkten inceleyebilirsiniz. Bizzat tarafımdan 2 defa denenmiş ve sorunsuzdur, tavsiye ederim.

http://www.mcitp.gen.tr/windows-server-2003-r2den-server-2012-migration-yukseltmeyi-islemi/

Ama!

İlk seferde bütün masterları taşıyıp, global cataloguda yeni server yaptım ama eski serveri dcpromo ile kaldırdıktan sonra Active Directory komple çakıldı 🙂

Burada sebep aramadım, belki benim hatam, belkide değil ama geçiş sürecini kısa tutmak akıllıca değil onu öğrendim.

Bu deneyimimden çıkardıklarım 1 günde migration olmuyor. Eğer sizde migration yapacaksanız, bırakın 3-4 gün iki DC birlikte replication yapsın, bu dönemde logları izleyin ve anlaşamadıkları yerleri tespit edin. Neden 3-4 gün diyorsanız, araştırmalarıma göre default schema replicationları 72 saatmış. 3-4 gün sonra eski DC’yi networkten ayıracağıım ve 3 gün daha bekleyeceğim ve bu arada loglara bakmaya devam edeceğim. Eğer bir sorun yoksa eski DC’yi dcpromo ile kaldıracağım ve hyper-v ile diğer sanallarımı kuracağım.

Entity Framework An error occurred while updating the entries. See the inner exception for details.

Ana tablonuzdaki ID ile referans tablonuzda ilişkilendirdiğiniz alanın; değerlerinin birbirinden farklı olmasından kaynaklanan hatadır.

Örnek vermek gerekirse aşağıdaki gibi tablo yapımız var. TBL_KULLANICI tablomuzdaki Id ile TBL_KULLANICI_YETKI tablomuzdaki Kullanici_Id birbiri ile ilişkilidir.

TBL_KULLANICI (Id, Ad)
TBL_KULLANICI_YETKI (Id, Kullanici_Id, Baslik)

Eğer TBL_KULLANICI tablosuna yeni kayıt eklerken aynı anda TBL_KULLANICI_YETKI tablosunada yeni kayıt ile alakı kayıt ekliyorsak; Id ile Kullanici_Id aynı değer olmak zorundadır. Farklı değer olduğunda bu hata ile karşılaşırsınız.

MVC 4 ve Ben

Değişmeyen tek şey değişimdir.

Bir yazılımcı olarak ne kadar değişimlere açığız? Arkadaşlarımızın baskılarıyla ASP’den ASP.NET’e geçtiğinizde, kendi kendinize ne dediğinizi hatırlıyormusunuz? Ben “Allah benim cezamı versin, ASP.NET’e şimdiye kadar neden geçmedim” demiştim.

Geçişlerimizdeki en büyük sorun işe elimizdeki işlerin yoğunluğu ve hiç bir zaman bize yetmeyen zamandır. En azından benim düşüncem, “Ya nasıl olsa, ASP.NET ile yapılanları ASP’lede yapabiliyorum, ne gerek var” dı ama kazın ayağın öyle değilmiş.

ASP’den ASP.NET’e geçiş beni şaşırtmıştı ama ASP.NET’den MVC 4’e geçiş beni büyüledi diyebilirim.

Şunu itiraf etmem gerekir ki yazılım geliştirme süreci biraz uzun gibi olsada, aslında çok eğlenceli. Uygulamayı geliştirken yazılımın esnek olmasıyla uğraşmanıza gerek yok, zaten ister istemez esnek bir hale geliyor.

MVC 4 ile ilk hafta mı bitirdim ve elimdeki ciddi bir projeyide MVC 4 ile yapıyorum. Bu süreç içinde sizlerle paylaşacağım çok güzel bilgiler olacak.

Şimdiden ben bile sabırsızlanıyorum 🙂

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.