sql server Arşiv

Errors in SQL Server while importing CSV file despite varchar(MAX)

You can use CSV or TEXT files for data transfers with Sql Server Management Studio. If the nvarchar fields in the table you will import are defined as MAX, you may see an error message.

You go through the Import Wizard and finally try to import the file you get the following error report:

Executing (Error) Messages
Error 0xc02020a1: Data Flow Task 1: Data conversion failed. The data conversion for column “”Detail”” returned status value 4 and status text “Text was truncated or one or more characters had no match in the target code page.”.

(SQL Server Import and Export Wizard)

Error 0xc020902a: Data Flow Task 1: The “Source – Sample_csv.Outputs[Flat File Source Output].Columns[“Detail”]” failed because truncation occurred, and the truncation row disposition on “Source – Sample_csv.Outputs[Flat File Source Output].Columns[“Detail”]” specifies failure on truncation. A truncation error occurred on the specified object of the specified component.

(SQL Server Import and Export Wizard)

Error 0xc0202092: Data Flow Task 1: An error occurred while processing file “C:\Sample.csv” on data row 2.

(SQL Server Import and Export Wizard)

Error 0xc0047038: Data Flow Task 1: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on Source – Sample_csv returned error code 0xC0202092. The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing. There may be error messages posted before this with more information about the failure.

(SQL Server Import and Export Wizard)

To solve the problem, go to the “Advanced” tab on the source screen where you have selected FLAT File, select “DT_TEXT” instead of “DT_STR” and continue the process.

Deleting RBS (Remote Blob Storage) Data on Disk (SharePoint)

There are two options to store your content data of your applications on your Microsoft SharePoint environment.

Default

This option stores the files uploaded to the site as binary content in content database tables. With this option active, default settings of SharePoint recycle bin will be in use when deleting content. These settings — described in details below — keeps the deleted content in content database and enables you to restore it even after 60 days (default value is 30 + 30 days).

RBS (Remote Blob Storage)

Remote Blob Storage is a whole other subject and we will focus on some of the problems we face on this subject. To learn more about RBS, I recommend reading this article: https://docs.microsoft.com/en-us/sharepoint/administration/rbs-overview

If I have to briefly explain, it is about storing binary BLOB data which is stored in content database by default outside of content database. In the case where RBS is used, default recycle bin in SharePoint works the same way, however in addition to the default setting of 30 + 30 days, garbage collection process of RBS must be performed. Otherwise, deleted SharePoint content will continue to take up space on the disk.

RBS (Remote Blob Storage) Verisinin Disk Üzerinden Silinmesi (SharePoint)

Varsayılan

RBS (Remote Blob Storage)

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.