SQL Server Error Msg 208: Invalid object name ‘STRING_SPLIT’.

Reading Time: 2 minutes

Bu hatayı ve bu özelliğin detaylarına ineceğiz bu gün.  STRING_SPLIT özelliği SQL Server 2016 versiyonu ile hayatımıza giren bir yeniliktir. Geç kalınmış bir yenilik olsada 2016 versiyonu ile hayatımıza giriş sağladı. Bu fonksiyon elimizdeki bir metinsel değeri, belirtilen bir ayraç niteliğinde karakterle parçalamakta ve neticeyi bizlere tablo olarak döndürmektedir.

Syntax: STRING_SPLIT (string, seperator)

Syntax ımızda String parametresi ayrıştırma ypacağımız metinsel ifadeyi içermektedir. Sperator parametresi ise ayraç sembolünü ifade etmektedir.Dikkat edeceğiniz nokta Sperator ün karkter olma zorunluluğudur. String_Split fonksiyonunun geriye tablo döndürdüğünü bildiğimizden SELECT * ifsadesi ile kullanılmalıdır.

Hızlıca örneğimiz üzerinden sürecimizi aktaralım,

Örneğimiz de string parametremiz @VarString değişkeninde virgül (,) ile ayrılarak gönderilmiş. Bizim amacımız virgülleri satır olarak işletmek ve tablo olarak sonucu döndürmek. O yüzden Sparator ümüz bizim örneğimizde virgül (,) olacak ki scriptimize baktığımızda bunu görmektesiniz. SELECT * bloğu ile işlem yapacağımızıda yukarıda belirtmiştik ve FROM ifadesinden sonra STRİING_SPLIT fonksiyonumuzu ve değerlerimizi parametrelerimize işledikten sonra aşağıda ki sonucu almaktayız.

Şimdi ise gelen problem ve çözümü içinde biraz konuşalım. SQL Server 2016 versiyonunuzu kullanıyorsunuz fakat bu scripti çalıştırdığınızda aşağıda ki hatayı alıyorsunuz.

Problem şu ki SQL Server 2016 ile gelen bir özellik ve ben SQL server 2016 kullandığım halde nasıl olurda bu hatayı alırım diye düşünebilirsiniz.

İlk bakmanız gereken bu nokta da Veritabanı uyumluluk modunuz yani Compability Level ınız. Veritabanınız Compability Level ı en az 130 yani SQL Server 2016 olması gerekmektedir bu özelliği kullanabilmeniz için.

Hemen Compability Level ımızı sorguladığımızda,

yukarıda ki sorgu sonucu 120 döndüğünü görmekteyiz ki 120 SQL Server 2014 versiyon uyumluluğu demektir. Biz SQL server 2016 üzerinde SQLTURKIYE_ veritabanımızın Compability Level ının 120 yani SQL Server 2014 olduğundan 2016 özelliklerini kullanamaz durumda.  Bu durumu ortadan kaldırmak için için Compability Level ı 2016 ya SET etmemiz gerekmkete. Bunun için de aşağıda ki scripti kullanarak bu işlemi gerçekleştirebilirsiniz.

Aynı query mizi tekrar çalıştırdığımızda sonuç döndürdüğünü görüyoruz. SQL Server 2017 için ise Compability Level 140 ‘tır.

Probleminizi bu şekilde çözüme kavuşturmuş oluyorsunuz. Problemsiz ve sıkıntısız günler dilerim.

İyi Çalışmalar.

Leave a Reply

Your email address will not be published. Required fields are marked *