sql server Arşiv

SQL Server Sunucusunu Sonradan Domaine Almak

Daha çok test veya geliştirme ortamı senaryosu olabilir ancak yine de hiçbir zaman karşımıza çıkmayacağını düşünebileceğimiz kadar masum olmayan konulardan biridir bir sunucuyu yazılımsal işlemler sonrası aktif dizine (domain) almak. Canlı ortamlarında elbette gerekli kurumların bir ön gereksinimidir sunucunun aktif dizinde olması ama yukarıda da bahsettiğim gibi test veya geliştirme ortamlarında veya klonlanmış sanal ortamlarda sunucu adını değiştirmek, sunucuyu aktif dizine almak daha sık gerçekleştirilir.

Aktif dizin yokken konfigürasyonu yapılan bir yazılım, sunucu aktif dizine alındıktan sonra çok farklı davranabilir. Ben bu ufak bilgilendirme yazısında SQL Server üzerinden gitmek istiyorum. Sunucuyu SQL Server kurulumu sonrasında aktif dizine almayı denerseniz karşılaşacağınız temel senaryo şu şekildedir.

  • Named-Pipes protokolü “Disabled” duruma gelmiştir.
  • SQL Server Management Studio‘ya bağlanamazsınız.
  • SQL Server servisleri durmuştur ve başlatamazsınız.

Bu durumun üstesinden gelmek için öncelikle “SQL Server Configuration Manager” ile “Named-Pipes” ı yeniden “Enable” duruma getirin. Ardından Management Studio’ya bağlanamama ve servislerin başlamama sebebi olan kullanıcılarınız yetkisi kısmına geliyoruz. Aktif dizinden önce lokal hesaplarınız sunucuda yönetici rolündeydi ama artık lokal hiçbirşey kalmadı. O halde yeni kullanıcılarınıza hak vermeniz lazım. Bunun için bilinen en kısa yol Management Studio ve oraya erişiminiz yok. Öncelikle bir uyarı, aktif dizine alma işlemi öncesi sunucuda “SQL Server and Windows Authentication” özelliğini aktif hale getirin ve geçici de olsa “sa” kullanıcısına hak verin ki aktif dizine girdiğinizde yeni kullanıcılarınıza hak vermek için sisteme bağlanabilin.

Ama diyelim ki bu yazıyı okuduğunuzda iş işten geçmişti, o halde “SQLCMD” ye merhaba diyelim. Aşağıda yer alan komutlar ile SQLCMD üzerinden yeni kullanıcılarınıza hak verebilir ve hem SQL Server Management Studio erişimi hem de servislerinizin yeniden çalışmaya başlamasını sağlayabilirsiniz.

 

Hata: Failed to update database “DBNAME” because the database is read-only

Kodladığınız uygulamanız içerisinde, bir batch işlemi çalıştırırken veya bir SSIS paketini çalıştırdığınızda, yani veritabanı üzerinde yazma işlemi yapmak istediğiniz herhangi bir zamanda bu hata ile karşılaşabilirsiniz.

“Failed to update database “DBNAME” because the database is read-only”

Yaptığınız kontrollerde database’in read-only modda olmadığını gözlemlemiş olabilirsiniz. Bunun için pek çoğunuzun bildiği üzere management studio üzerinden ilgili veritabanı ismi üzerinde sağ tıklamanız ve özellikler ekranında “Options” bölümüne gelmeniz ve en alta inmeniz yeterli. Burada “Read-Only” özelliğinin “False” olmasını bekliyoruz. “True” ise zaten hatanın sebebi açıkça ortadadır. Değeri değiştirmeniz yeterli olacaktır.

Biz bu bölümün “False” olmasına rağmen hatayı aldığımızı varsayalım. Bu durumda yapmanız gereken kontroller için aşağıdaki kod bloğunu kullanabilirsiniz. “AdventureWorks” örnek olarak kullanılmıştır. Bu bölümde kendi veritabanı isminizi verebilirsiniz.

 

 

Son olarak SQL Server Express versiyonunu kullananlar için bir ek hatırlatma. Burada AttachDbFileName kullanıyorsanız SQL Server servis hesabınızın Connection String’de belirttiğiniz dosya yoluna erişim ve yazma için izni olduğundan da emin olmalısınız.

Hata: SSIS Access Denied

SQL Server Integration Services kurulumunu yapmanızın ardından kurulum aşamasında servis hesabı olarak verdiğiniz kullanıcı ile bile SSIS instance’ına bağlantı kurarken aşağıdaki şekilde yetki hatası alabilirsiniz.

“Connecting to the Integration Service on the computer ”[SERVERNAME]’ failed with the following error. Access is denied”

Esas olarak SQL Server Integration Services kurulumlarında varsayılan olarak server administrator grubu yetki sahibidir ancak bazen bu kullanıcı ile bile yetki hatası alabilir ve SSIS instance’ına bağlantı sağlayamayabilirsiniz. Bu durumda aşağıdaki adımları takip etmek işinize yarayacaktır. (SQL Server 2014 ve SQL Server 2016 için test edilmiştir)

  • Component Services ekranını açın. Bunun için Start > Run  kısmına “dcomcnfg” yazarak ilerleyebilirsiniz.
  • Sol bölümdeki panelden Computers > My Computer > DCOM Config bölümüne kadar gelin.
  • Burada “Microsoft SQL Server Integration Services 12.0” (Bu SQL Server 2014 için, SQL Server 2016’da versiyon numarası 13.0 olacaktır)
  • Üzerinde sağ tıklayarak “Properties” > “Security” tabına gelin ve ekrandaki bölümlere istediğiniz yetki seviyelerine göre kullanıcınızı veya grubunuzu ekleyin.
  • İşlemden sonra SQL Server Integration Services servisini yeniden başlatın.

Bazen buna rapmen yetkilendirmede sorun yaşıyor olabilirsiniz. Bu durumda ek bir adım olarak aşağıdakini de uygulayabilirsiniz.

  • Server Manager > Computer Management > Local Users and Groups > Groups kısmında “Distributed COM Users” grubunu bulun ve kullanıcınızı buraya ekleyin.