SqlServer 2005'in güzel özelliklerinden bir tanesi de .net CLR ile entegre çalışabilmesidir. Bu özellik SQL Server özelliklerinin genişletilebişmesine olanak sağlar.
Mesela C# ya da VB kodu yazarak nesne yönelimli bir yapıda stored procedure, trigger gibi veritabanı nesneleri oluşturmak mümkündür.
Aynı işlemleri T-SQL ile de yapmak mümkündür ama T-SQL oldukça eski bir dildir ve prosedürel bir yapıdadır. Olanakları da haliyle daha kısıtlıdır.
SQL Server 2000'de oluşturulmuş bir veritabanını SQL Server 2005'e attach edip kullanırsanız, CLR tabanlı veritabanı nesneleri oluşturup deploy ederken aşağıdaki hata ile karşılaşırsınız.
Server: Msg 325, Level 15, State 1, Procedure ObjectName, Line 4 Incorrect syntax near 'external'. You may need to set the compatibility level of the current database to a higher value to enable this feature. See help for the stored procedure sp_dbcmptlevel.
Bu problemi çözmek için veritabanının compability level'ini 90 yapmak gerekir.
Aşağıdaki ifadeyi Management Studio'da sorgu olarak yazıp çalıştırarak kolayca istediğiniz bir veritabanının compability level'ini 90 yapabilirsiniz.
exec sp_dbcmptlevel 'Veritabanı Adı', 90
Artık CLR tabanlı nesneler oluşturup ilgili veritabanı üzerine deploy edebilirsiniz.
Managed Code ile oluşturup deploy edilen nesneleri projelerimizde kullanabilmek için de SQL Server Managemenet Studio'da aşağıdaki ifadeyi çalıştırıp CLR Enabled yapmak gerekiyor.
EXEC sp_configure 'clr enabled', 1;
RECONFIGURE WITH OVERRIDE;
GO