14 Kasım 2016 Pazartesi

kb2919355 check failed. if you have installed kb2919355, please make sure you have restart your machine sql server 2016 error



Sql Server 2016 kurulumuna bu hatayı alıyorsanız aslında sorunun çözümü oldukça kolay. İşletim sistemini güncelleyerek bu sorundan kurtulabilirsiniz. Windows update penceresinde güncellemeleri kontrol ederek kb2919355 kodlu check box'ı işaretleyin ve yükletin eğer listede bu güncelleme gözükmüyorsa önce listede bulunan bütün güncellemeleri yükleyin ardında Pc'ye restart atarak tekrardan update listesini kontrol edin ve ilgili kodu tıklayarak yükleyin sorun giderilmiş olacaktır.

SQL Server da Oracle JRE 7 Update 51 (64-bit) or higher is required Hatası

SQL Server Feature Selection ekranında PolyBase Query Service For External Data özelliğini seçerseniz bu durumda yukarıdaki hata ile karşılaşacaksınız. Çünkü PolyBase Query Service For External Data için Oracle dan küçük bir java eklentisi gerekmektedir. Bunun için şu linki tıklayarak aşağıdaki resimde işaretlediğim eklentiyi indirin ve kurun. Ardından bu hatayı aşmış olacaksınız.



2 Kasım 2016 Çarşamba

Database Diagram support objects cannot be installed because this database does not have a valid owner hatası hakkında

Eğer database diagramına erişmeye çalışırken yukarıdaki hatayı alıyorsanız yetki ile ilgili bazı sıkıntılar yaşıyorsunuz demektir. Aşağıdaki kodu çalıştırarak sorunu gidermiş olacaksınız:

ALTER AUTHORIZATION ON DATABASE:: DatabaseAdı TO [KullanıcıIsmi];

Örnek Kullanım:

ALTER AUTHORIZATION ON DATABASE::AdventureWork TO [sa];

1 Kasım 2016 Salı

Failed to execute the package or element. Build errors were encountered.


Yukarıdaki hata ile karşılaşıyorsanız çözümü aslında oldukça basit. Öncelikle güncel olarak dataflow'unuzu kullanan bütün programları kapatın. Buna rağmen sorun çözülmediyse SSIS kapatın ve görev yöneticisinden açık kalmadığına emin olun. Buna rağmen sorun hala devam ediyorsa oturumu kapatıp açarak sorunu düzeltmiş olacaksınız.

25 Ekim 2016 Salı

Dbcc CheckIdent Komut ile Identity Ayarlama

Eğer SQL Serverda tablonuz da identity specification açıksa ve delete komutu ile veri sildiyseniz yada başka bir sebepten dolayı  sayılar silinmeden önceki halinden artmaya devam edeceklerdir. Bu noktada eğer sayıların arttırımına müdahale etmek yada belli bir sayıdan devam etmesini istiyorsanız bu noktada

DBCC checkident ('Şema.TabloAd',reseed,10)

Yukarıdaki bu komutla belirttiğiniz tabloya sırada gelecek olan insert'un alacağı ilk değer 11 olacaktır.

Cannot truncate table ‘TabloAdi’ because it is being referenced by a FOREIGN KEY constraint Hatası


Eğer silmek istediğiniz tablo üzerinde primary key ve foreign key bağlantısı varsa bu noktada truncate  cümleciği Cannot truncate table ‘TabloAdi’ because it is being referenced by a FOREIGN KEY constraint hatasını döndürür. Bu noktada ya tablo üzerindeki pk-fk yapısını kaldırıp tabloyu truncate edip tekrardan oluşturmalısınız yada truncate'i kullanmak yerine delete cümleciği ile tablo içindeki verileri silmelisiniz. 

Constraint'i silmek için aşağıdaki kodu kullanabilirsiniz:

Alter Table [dbo].[TabloAdi]
Drop Constraint Constraint_adi

Tablo datalarını silmek için tekrardan çalıştırın
Truncate table [dbo].[TabloAdi]

1 Ekim 2016 Cumartesi

Cannot create trigger ' ' because its schema is different from the schema of the target table or view Hatası


 

MS SQL Server' da trigger'larda dikkat edilmesi gereken ayrıntılardan bir tanesi, trigger'ın üzerinde çalışacağı tablo ile oluşturacağınız trigger aynı şema altında olmalıdır. Eğer trigger'ı farklı bir şema üzerinde create edersiniz Cannot create trigger 'şema adı ' because its schema is different from the schema of the target table or view hatasını alırsınız.

27 Eylül 2016 Salı

The request failed or the service didn't respond in a timely fashion Hatası



  • Bağlandığınız kullanıcın sistemde yetkilerini kontrol edin. Eğer sunucuda yetkileri kısıtlıysa Windows servisleri start/stop etmenizi engelleyecektir ve yukarıdaki hatayı alacaksınızdır.

  • Diğer bir durum ise SQL server configuration manager' da SQL server network configuration' a gelerek buradan ilgili Instance'ı seçip Via protocol'unu disable edin.

  • Servislerin şifrelerinin değişmediğinden emin olun. Eğer servis şifreleri değiştirildiyse yeni şifreyi girip tekrardan deneyin.

  • SQL Server Agent'ı kullanan kullanıcının sys yetksine sahip olduğundan emin olun. Eğer agent'ı çalıştıran kullanıcının yetki kısıtlaması söz konusu ile Agent'ı başlatamayacaktır.


23 Eylül 2016 Cuma

SQL Server Configuration Manager'ın Bulunamaması


Windows'ta SQL Server Configuration Manager' a ulaşamıyorsanız. Aşağıdaki yolu kullanarak Configuration Manager'a ulaşabilirsiniz.

  • windows+R tuşuna basarak çalıştırı açın. Buraya SQL server sürümünüzü göre aşağıdakileri yazarsanız Configuration Manager açılacaktır.

  • SQLServerManager13.msc ---- SQL Server 2016
  • SQLServerManager12.msc ---- SQL Server 2014
  • SQLServerManager11.msc ---- SQL Server 2012
  • SQLServerManager10.msc ---- SQL Server 2008

18 Haziran 2016 Cumartesi

The column cannot be processed because more than one code page Hatası


The column "Kolon " cannot be processed because more than one code page are specified for it. Hatası aslında hedef ve kaynak arasındaki kolonlar arasında yaşanan code page farkından kaynaklanmaktadır. Bunu Destination Editor den hata mesajında belirtilen kolonun code page'ine Destination Editor den mappings alanına gelerek ilgili kolonun üzerinde imleç ile beklerseniz iki taraftaki code page değerlerinin farkını görebilirsiniz. Sorunu gidermek aslında oldukça basit. Data Flow tab'inde destination'a sağ tıklayarak Properties menüsüne gelerek açılan ekranda AlwaysUseDefaultCodePage değerini TRUE yaparsanız ilgili hata düzeltilmiş olur.





28 Mart 2016 Pazartesi

Except ve Intersect



Except ve Intersect



Except ve intersect operatörleri iki farklı sorgu sonucundan dönen dataları kıyaslama yapabilmemizi sağlarlar. Eğer aradaki veri farklılıklarını bulmak istiyorsak Except ifadesini kullanırız. Bunu da kullanırken Except den önce yazılan sorguda olup 2. sorguda bulunmayan dataları listelenmesini sağlar. Kullanımı ise şu şekildedir:

Select  Id  from products
Except
Select  Id from production

Bu sorgu sonucunda products tablosunda olup, production tablosunda bulunmayan datalar listelenir.

Intersect operatörü ise iki farklı sorgudan bize kesişen dataları bulmamızı sağlar.  Eğer ki iki farklı tablodaki duplicate kayıtları tespit etmek istersek kullanmak isteyeceğimiz bir operatördür. Kullanım olarak except ifadesi ile aynıdır.

Select  Id  from products
intersect
Select  Id from production 


Sql Server da Transaction Yapısı



Transaction kelimesinin Türkçe karşılığı işlemdir. Aslında adından da anlaşılacağı üzere SQL Server üzerinde yapılan işlemlerin tümüne verilen addır diyebiliriz. Fakat bu noktada SQL Server'ın arka plandaki çalışma mantığını anlamak ve gönderilen transactionları ne şekilde karşıladığını, kaç çeşit transaciton yapısı olduğunu bu yazıda ele alacağız.
Transaction yapısını en basit hali ile ifade etmeye çalışırsak aslında daha küçük parçalara ayrılamayan işlem bloğudur denilebilir. Transaciton yapısını korumak için temel 4 ana kural vardır. Bu 4 kuralın genel olarak adına ACID denilmektedir. ACID; Atomicity , Consistency, Isolation ve Durability nin baş harflerinden oluşmuştur. Şimdi aşağıda bu 4 temel maddeyi inceleyelim:

Atomicty: Bölünmezlik olarak nitelendirilir. Başlatılan bir transaction bloğu çalıştıktan sonta herhangi bir şekilde bölünemez ya da işlem yarım kalamaz kuralaını ifade eder. Ya başaltılan işlem başarılı olarak tamamlanalarak sonlanır ya da bir sorun oluşması haline en başa dönülmesi gerekmektedir.
Consistency:  Tutarlılık olarak nitelendirilir. Transaciton bloğunun içerisinde bulunan ara işelmler arasında yaşanabilecek herhangi bir bozukluk data tarafında bozukluğa sebep olacağı için veri bazında tutarsızlığa sebep olabilir. Bu durumda transacition yapısının tutarlılığı sağlaması gerekmektedir.
Isolation: Transactionlar arasındaki İzolasyonu temsil eden kuraldır. Database de bulunan diğer farklı transactionlar veritabanı yapısı içerisinde birbirinden bağımsız olarak ele alınmalıdır. Ve transaction içerisindeki ara işlemlerden ziyade transaction diğer transacitionlar tarafından bir bütün olarak görülmelidir.
Durability: Dayanıklılık kuralını temsil eder. Transactionlar çalışma esnasında meydana gelen problemlere karşı dayanaklı olabilmelidir ve bunlardan etkilenmemesi gerekir.Bu problemler işletim sistminin çökmesi, ana kartın yanması gibi durumlar olabilir. İşlem sırasında meydana gelen beklenmedik bir problem sırasında başarılı şekilde rollback olayını sağlayabilmesi gerekir.

SQL Server da Transactionların Çalışma Mantığı

SQL Server çalışma mantığı olarak eğer bir kayıt üzerinde değişiklik yapacaksa öncelikle kayıtların bulunduğu ilgili sayfaları HDD'den RAM'e alınıp alınmadığını kontrol eder. Eğer RAM de bulunmuyorsa öncelikle ilgili Data Page'ler Buffer Cashe'e çıkartılır. Daha sonrada ilgili kayıtlar üzerinde değişiklikler yapılır. Fakat bu yapılan değişikliler hemen HDD'ye yansıtılmaz. Tam bu zaman aralığında değişiklik yapılan kayıt RAM ve HDD üzerinde farklı değerlere sahiptir. Bu gerçekleşen olaya DIRTY PAGE denilmektedir.

SQL Server da ki Transaction Çeşitleri

SQL Server da toplam 3 çeşit Transaction vardır.
o    Explict Transaction
o    Implict Transaction
o    AutoCommit

AutoCommit Transaction

         SQL Server default olarak AutoCommit olarak çalışmaktadır. Her bir işlem ayrı ayrı ele alınır. Örneğin iki farklı update işlemini art arda çalıştırdığınızda, ilkinde oluşan bir hata ikincisinin çalışmasını etkilemeyecektir ve ikinci işlem iptal edilmeden update işlemini sağlayacaktır. Bu modda SQL Server her bir işlemi ayrı ayrı olarak ele alır.

Explict Transaction

       AutoCommit de her bir işlemin ayrı ayrı el alındığını söylemiştik. Fakat bazen ihtiyaçlar dâhilinde farklı birkaç işlemin birleşimi tek bir işlemi oluşturmaktadır ve bu işlemlerin herhangi birinde gerçekleşecek bir hata aslında nihai sonucu etkileyeceği için en başa dönülmesi gerekir ki developer bunun autocommit modunda handle edemeyecektir. Bu noktada developer Explict Transaction ile kendi transaction bloğunu tanımlayarak ilgili alt işlemleri tek bir transaction da toplayabilir. Bunu yaparken de  begin tran ile transaction'nı başlatıp commit tran ve rollback ile transaciton'ı sonlandırır. Eğer transaciton başarılı bir şekilde sonlanırsa commmit tran ile değişiklikler disc'e kayıt edilmiş olur ya da işlem sırasında herhangi bir problem yaşanırsa try cacth bloğuna düşen hata ile en başa dönülür. (@@Error değişkeni ilede ata olup olnumadğı kontrol edilerek buradan da rollback ile dönülebilir. Ama her bir işlem sonunda @@error ile kontrol edilmesi gerekeceği için Try catch bloğu ile hata kontrolü sağlamak çok daha kolay olacaktır.) Bir diğer husus ise Begin tran ifadesinden sonra işlem sonunda rollhback ya da commit ile transaciton'nın sonlandırlması unutulamamalıdır. Aksi halde transaction sonlanmayacak ve sistem kaynakları gerekesiz yere kullanılmaya devam edecektir.

Save Point nedir ?
Eğer çok uzun transactionlar üzerinde çalışıyorsak save points'ler ile herhangi bir problem durumunda en başa dönmek yerine bizim belirlediğimiz alanlara kadar geri dönme işlemini sağlayabiliriz.


Not:@@trancount değeri sistemde anlık olarak açık olan transaction ları bize göstermektedir.

Begin Tran

--Alt işlemler

Commit tran // Rollback

Implicit Transaction

Implict_Transaciton On ifadesini kullanarak truncate table, alter table, select, create, revoke, delete, open, drop,insert, fetch ve update ifadelerinden sonra transaciton Sql Server tarafından otomatik olarak başatılır. Fakat bu durumda bizim commit yada rollback ifadeleri ile kapatmamız gerekir. Implict_transaction off  ile SQL Server default özelliği olan AutoCommit moda geri döner. Oracle da ise deafult olarak Implict Transaction kullanılmaktadır.Bir sonrakiş yazıda örneklerle konuyu çeşitlendirmeye çalışacağız.