{"id":2721,"date":"2020-01-30T12:46:00","date_gmt":"2020-01-30T09:46:00","guid":{"rendered":"https:\/\/www.ozgurguler.net\/blog\/?p=2721"},"modified":"2026-09-23T10:30:16","modified_gmt":"2026-09-23T07:30:16","slug":"sql-2017-clr-strict-security-hatasi","status":"publish","type":"post","link":"https:\/\/www.ozgurguler.net\/blog\/sql-2017-clr-strict-security-hatasi\/","title":{"rendered":"SQL 2017 Clr strict security hatas\u0131"},"content":{"rendered":"\r\n<h1><span class=\"\">SQL Server 2017 &#8220;CLR Strict Security&#8221; Hatas\u0131 \u2014 Kal\u0131c\u0131 \u00c7\u00f6z\u00fcm<\/span><\/h1>\r\n<p class=\"ds-markdown-paragraph\"><strong><span class=\"\">K\u0131sa \u00f6zet:<\/span><\/strong><span class=\"\"> SQL Server 2017 ile birlikte Microsoft, CLR assembly&#8217;lerini varsay\u0131lan olarak <\/span><strong><span class=\"\">engelleyen<\/span><\/strong><span class=\"\"> yeni bir g\u00fcvenlik ayar\u0131 getirdi (<\/span><code>clr strict security = 1<\/code><span class=\"\">). Bu y\u00fczden daha \u00f6nce sorunsuz \u00e7al\u0131\u015fan CLR tabanl\u0131 uygulamalar (Mikro, Logo, Netsis vb.) SQL 2017&#8217;ye ge\u00e7i\u015fte hata vermeye ba\u015flar. A\u015fa\u011f\u0131daki ad\u0131mlar sorunu kal\u0131c\u0131 olarak \u00e7\u00f6zer.<\/span><\/p>\r\n<hr \/>\r\n<h2><span class=\"\">Belirtiler<\/span><\/h2>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">Bu hatayla kar\u015f\u0131la\u015f\u0131yorsan\u0131z do\u011fru yerdesiniz:<\/span><\/p>\r\n<ul>\r\n<li>\r\n<p class=\"ds-markdown-paragraph\"><code>CREATE ASSEMBLY failed because assembly ... is not trusted<\/code><\/p>\r\n<\/li>\r\n<li>\r\n<p class=\"ds-markdown-paragraph\"><code>The assembly ... could not be loaded because it is not authorized (CLR strict security)<\/code><\/p>\r\n<\/li>\r\n<li>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">Mikro\/ERP uygulamas\u0131 a\u00e7\u0131l\u0131\u015fta CLR kaynakl\u0131 hata veriyor<\/span><\/p>\r\n<\/li>\r\n<li>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">SQL 2016&#8217;da \u00e7al\u0131\u015fan bir uygulama SQL 2017&#8217;ye ge\u00e7ince bozuldu<\/span><\/p>\r\n<\/li>\r\n<\/ul>\r\n<hr \/>\r\n<h2><span class=\"\">Neden Oluyor?<\/span><\/h2>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">SQL Server 2017&#8217;den itibaren <\/span><code>clr strict security<\/code><span class=\"\"> ayar\u0131 <\/span><strong><span class=\"\">varsay\u0131lan olarak 1 (a\u00e7\u0131k)<\/span><\/strong><span class=\"\"> gelir. Bu ayar a\u00e7\u0131kken:<\/span><\/p>\r\n<ul>\r\n<li>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">\u0130mzas\u0131z CLR assembly&#8217;leri \u00e7al\u0131\u015ft\u0131r\u0131lamaz<\/span><\/p>\r\n<\/li>\r\n<li>\r\n<p class=\"ds-markdown-paragraph\"><code>SAFE<\/code><span class=\"\"> olarak i\u015faretlenmi\u015f olsa bile assembly g\u00fcvenilir say\u0131lmaz<\/span><\/p>\r\n<\/li>\r\n<li>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">Eski uygulamalar\u0131n CLR bile\u015fenleri devre d\u0131\u015f\u0131 kal\u0131r<\/span><\/p>\r\n<\/li>\r\n<\/ul>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">\u00c7\u00f6z\u00fcm iki katmanl\u0131d\u0131r: <\/span><strong><span class=\"\">sunucu seviyesi ayar<\/span><\/strong><span class=\"\"> + <\/span><strong><span class=\"\">veritaban\u0131 seviyesi g\u00fcven<\/span><\/strong><span class=\"\">.<\/span><\/p>\r\n<hr \/>\r\n<h2><span class=\"\">\u00c7\u00f6z\u00fcm<\/span><\/h2>\r\n<h3><span class=\"\">Ad\u0131m 1 \u2014 Sunucu Seviyesi Ayarlar<\/span><\/h3>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">SSMS&#8217;te <\/span><code>master<\/code><span class=\"\"> veritaban\u0131na ba\u011fl\u0131yken a\u015fa\u011f\u0131daki blo\u011fu <\/span><strong><span class=\"\">tek seferde<\/span><\/strong><span class=\"\"> \u00e7al\u0131\u015ft\u0131r\u0131n:<\/span><\/p>\r\n<div class=\"md-code-block md-code-block-dark\">\r\n<div class=\"md-code-block-banner-wrap\">\r\n<div class=\"md-code-block-banner md-code-block-banner-lite\">\r\n<div class=\"_121d384\">\r\n<div class=\"d2a24f03\"><span class=\"d813de27\">sql<\/span><\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<pre><span class=\"token comment\">-- Geli\u015fmi\u015f se\u00e7enekleri a\u00e7 (clr strict security'yi g\u00f6rebilmek i\u00e7in gerekli)<\/span>\r\n<span class=\"token keyword\">EXEC<\/span> sp_configure <span class=\"token string\">'show advanced options'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">RECONFIGURE<\/span><span class=\"token punctuation\">;<\/span>\r\nGO\r\n\r\n<span class=\"token comment\">-- CLR'yi etkinle\u015ftir<\/span>\r\n<span class=\"token keyword\">EXEC<\/span> sp_configure <span class=\"token string\">'clr enabled'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">RECONFIGURE<\/span><span class=\"token punctuation\">;<\/span>\r\nGO\r\n\r\n<span class=\"token comment\">-- SQL 2017'nin kat\u0131 g\u00fcvenlik k\u0131s\u0131tlamas\u0131n\u0131 kapat<\/span>\r\n<span class=\"token keyword\">EXEC<\/span> sp_configure <span class=\"token string\">'clr strict security'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">RECONFIGURE<\/span><span class=\"token punctuation\">;<\/span>\r\nGO\r\n\r\n<span class=\"token comment\">-- Geli\u015fmi\u015f se\u00e7enekleri tekrar kapat (temizlik, opsiyonel)<\/span>\r\n<span class=\"token keyword\">EXEC<\/span> sp_configure <span class=\"token string\">'show advanced options'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">RECONFIGURE<\/span><span class=\"token punctuation\">;<\/span>\r\nGO<\/pre>\r\n<\/div>\r\n<blockquote>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">\u26a0\ufe0f <\/span><strong><span class=\"\">Bu ad\u0131mdan sonra SQL Server servisini mutlaka yeniden ba\u015flat\u0131n.<\/span><\/strong><span class=\"\"> Aksi halde <\/span><code>clr strict security<\/code><span class=\"\"> de\u011fi\u015fikli\u011fi tam olarak devreye girmez.<\/span><\/p>\r\n<\/blockquote>\r\n<p class=\"ds-markdown-paragraph\"><strong><span class=\"\">Servisi yeniden ba\u015flatmak i\u00e7in:<\/span><\/strong><\/p>\r\n<div class=\"md-code-block md-code-block-dark\">\r\n<div class=\"md-code-block-banner-wrap\">\r\n<div class=\"md-code-block-banner md-code-block-banner-lite\">\r\n<div class=\"_121d384\">\r\n<div class=\"d2a24f03\"><span class=\"d813de27\">powershell<\/span><\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<pre><span class=\"token function\">Restart-Service<\/span> <span class=\"token operator\">-<\/span>Name MSSQLSERVER<\/pre>\r\n<\/div>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">(Named instance kullan\u0131yorsan\u0131z servis ad\u0131 <\/span><code>MSSQL$InstanceAd\u0131<\/code><span class=\"\"> \u015feklindedir.)<\/span><\/p>\r\n<hr \/>\r\n<h3><span class=\"\">Ad\u0131m 2 \u2014 Veritaban\u0131 Seviyesi G\u00fcven<\/span><\/h3>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">Sunucu ayarlar\u0131 tek ba\u015f\u0131na yetmezse, ilgili veritaban\u0131n\u0131 &#8220;g\u00fcvenilir&#8221; olarak i\u015faretlemek gerekir.<\/span><\/p>\r\n<blockquote>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">\ud83d\udd34 <\/span><code>MikroDB_V15_XXX<\/code><span class=\"\"> yazan yeri <\/span><strong><span class=\"\">kendi veritaban\u0131 ad\u0131n\u0131zla<\/span><\/strong><span class=\"\"> de\u011fi\u015ftirin.<\/span><br \/><span class=\"\">\ud83d\udd34 <\/span><code>SRV\\Administrator<\/code><span class=\"\"> yazan yeri <\/span><strong><span class=\"\">kendi SQL login&#8217;inizle<\/span><\/strong><span class=\"\"> de\u011fi\u015ftirin.<\/span><\/p>\r\n<\/blockquote>\r\n<div class=\"md-code-block md-code-block-dark\">\r\n<div class=\"md-code-block-banner-wrap\">\r\n<div class=\"md-code-block-banner md-code-block-banner-lite\">\r\n<div class=\"_121d384\">\r\n<div class=\"d2a24f03\"><span class=\"d813de27\">sql<\/span><\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<pre><span class=\"token comment\">-- Veritaban\u0131n\u0131 g\u00fcvenilir olarak i\u015faretle<\/span>\r\n<span class=\"token keyword\">ALTER<\/span> <span class=\"token keyword\">DATABASE<\/span> MikroDB_V15_XXX <span class=\"token keyword\">SET<\/span> TRUSTWORTHY <span class=\"token keyword\">ON<\/span><span class=\"token punctuation\">;<\/span>\r\nGO\r\n\r\n<span class=\"token comment\">-- Veritaban\u0131 sahibini yetkili bir login yap<\/span>\r\n<span class=\"token comment\">-- (sp_changedbowner SQL 2012+ s\u00fcr\u00fcmlerde kullan\u0131mdan kald\u0131r\u0131ld\u0131, a\u015fa\u011f\u0131daki daha do\u011fru)<\/span>\r\n<span class=\"token keyword\">ALTER<\/span> <span class=\"token keyword\">AUTHORIZATION<\/span> <span class=\"token keyword\">ON<\/span> <span class=\"token keyword\">DATABASE<\/span>::MikroDB_V15_XXX <span class=\"token keyword\">TO<\/span> <span class=\"token punctuation\">[<\/span>SRV\\Administrator<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\r\nGO<\/pre>\r\n<\/div>\r\n<hr \/>\r\n<h2><span class=\"\">Do\u011frulama<\/span><\/h2>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">Ayarlar\u0131n ger\u00e7ekten uyguland\u0131\u011f\u0131n\u0131 kontrol edin:<\/span><\/p>\r\n<div class=\"md-code-block md-code-block-dark\">\r\n<div class=\"md-code-block-banner-wrap\">\r\n<div class=\"md-code-block-banner md-code-block-banner-lite\">\r\n<div class=\"_121d384\">\r\n<div class=\"d2a24f03\"><span class=\"d813de27\">sql<\/span><\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<pre><span class=\"token keyword\">EXEC<\/span> sp_configure <span class=\"token string\">'clr enabled'<\/span><span class=\"token punctuation\">;<\/span>           <span class=\"token comment\">-- value_in_use = 1 olmal\u0131<\/span>\r\n<span class=\"token keyword\">EXEC<\/span> sp_configure <span class=\"token string\">'clr strict security'<\/span><span class=\"token punctuation\">;<\/span>   <span class=\"token comment\">-- value_in_use = 0 olmal\u0131<\/span>\r\nGO\r\n\r\n<span class=\"token keyword\">SELECT<\/span> name<span class=\"token punctuation\">,<\/span> is_trustworthy_on\r\n<span class=\"token keyword\">FROM<\/span> sys<span class=\"token punctuation\">.<\/span><span class=\"token keyword\">databases<\/span>\r\n<span class=\"token keyword\">WHERE<\/span> name <span class=\"token operator\">=<\/span> <span class=\"token string\">'MikroDB_V15_XXX'<\/span><span class=\"token punctuation\">;<\/span>            <span class=\"token comment\">-- is_trustworthy_on = 1 olmal\u0131<\/span>\r\nGO<\/pre>\r\n<\/div>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">\u00dc\u00e7 de\u011fer de bekledi\u011finiz gibi \u00e7\u0131k\u0131yorsa sorun \u00e7\u00f6z\u00fclm\u00fc\u015ft\u00fcr.<\/span><\/p>\r\n<hr \/>\r\n<h2><span class=\"\">S\u0131k Yap\u0131lan Hatalar<\/span><\/h2>\r\n<div class=\"ds-scroll-area ds-scroll-area--show-on-focus-within ds-scroll-area--enabled _1210dd7 c03cafe9\">\r\n<div class=\"ds-scroll-area__gutters\">\r\n<div class=\"ds-scroll-area__horizontal-gutter\">\u00a0<\/div>\r\n<div class=\"ds-scroll-area__vertical-gutter\">\u00a0<\/div>\r\n<\/div>\r\n<table>\r\n<thead>\r\n<tr>\r\n<th><span class=\"\">Hata<\/span><\/th>\r\n<th><span class=\"\">Sonu\u00e7<\/span><\/th>\r\n<\/tr>\r\n<\/thead>\r\n<tbody>\r\n<tr>\r\n<td><span class=\"\">SQL servisini yeniden ba\u015flatmamak<\/span><\/td>\r\n<td><code>clr strict security = 0<\/code><span class=\"\"> g\u00f6r\u00fcnse de etkili olmaz<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td><span class=\"\">Veritaban\u0131 ad\u0131n\u0131 de\u011fi\u015ftirmeyi unutmak<\/span><\/td>\r\n<td><code>ALTER DATABASE<\/code><span class=\"\"> komutu hata verir<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td><code>TRUSTWORTHY ON<\/code><span class=\"\"> yapmay\u0131 atlamak<\/span><\/td>\r\n<td><span class=\"\">Assembly yine &#8220;not trusted&#8221; hatas\u0131 verir<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td><span class=\"\">Yanl\u0131\u015f login&#8217;e sahiplik vermek<\/span><\/td>\r\n<td><span class=\"\">CLR \u00e7a\u011fr\u0131lar\u0131 yetki hatas\u0131 verir<\/span><\/td>\r\n<\/tr>\r\n<tr>\r\n<td><span class=\"\">Sadece <\/span><code>clr enabled<\/code><span class=\"\"> a\u00e7\u0131p <\/span><code>clr strict security<\/code><span class=\"\">&#8216;yi unutmak<\/span><\/td>\r\n<td><span class=\"\">En s\u0131k yap\u0131lan hata \u2014 as\u0131l sorun bu ayardad\u0131r<\/span><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\r\n<hr \/>\r\n<h2><span class=\"\">G\u00fcvenlik Notu<\/span><\/h2>\r\n<p class=\"ds-markdown-paragraph\"><code>clr strict security = 0<\/code><span class=\"\"> ve <\/span><code>TRUSTWORTHY ON<\/code><span class=\"\"> ayarlar\u0131, SQL Server&#8217;\u0131n CLR i\u00e7in getirdi\u011fi ek g\u00fcvenlik katman\u0131n\u0131 <\/span><strong><span class=\"\">devre d\u0131\u015f\u0131 b\u0131rak\u0131r<\/span><\/strong><span class=\"\">. Bu ayarlar:<\/span><\/p>\r\n<ul>\r\n<li>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">\u2705 K\u0131sa vadede uygulaman\u0131z\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r<\/span><\/p>\r\n<\/li>\r\n<li>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">\u26a0\ufe0f Uzun vadede daha az g\u00fcvenli bir yap\u0131land\u0131rma demektir<\/span><\/p>\r\n<\/li>\r\n<\/ul>\r\n<p class=\"ds-markdown-paragraph\"><strong><span class=\"\">Daha g\u00fcvenli alternatif:<\/span><\/strong><span class=\"\"> Assembly&#8217;leri bir sertifika ile imzalamak ve sertifikay\u0131 <\/span><code>UNSAFE ASSEMBLY<\/code><span class=\"\"> yetkisiyle bir login&#8217;e ba\u011flamak. Ancak bu, uygulama \u00fcreticisinin (Mikro vb.) imzal\u0131 assembly da\u011f\u0131tmas\u0131n\u0131 gerektirir. Uygulama \u00fcreticiniz imzal\u0131 s\u00fcr\u00fcm sunmuyorsa yukar\u0131daki \u00e7\u00f6z\u00fcm pratikte tek se\u00e7enektir.<\/span><\/p>\r\n<p class=\"ds-markdown-paragraph\"><strong><span class=\"\">\u00d6neri:<\/span><\/strong><span class=\"\"> Bu ayarlar\u0131 yaln\u0131zca uygulamay\u0131 \u00e7al\u0131\u015ft\u0131ran sunucuda uygulay\u0131n; m\u00fcmk\u00fcnse bu sunucuyu di\u011fer i\u015f y\u00fcklerinden izole edin.<\/span><\/p>\r\n<hr \/>\r\n<h2><span class=\"\">\u00d6zet<\/span><\/h2>\r\n<ol start=\"1\">\r\n<li>\r\n<p class=\"ds-markdown-paragraph\"><code>show advanced options<\/code><span class=\"\"> \u2192 <\/span><code>1<\/code><\/p>\r\n<\/li>\r\n<li>\r\n<p class=\"ds-markdown-paragraph\"><code>clr enabled<\/code><span class=\"\"> \u2192 <\/span><code>1<\/code><\/p>\r\n<\/li>\r\n<li>\r\n<p class=\"ds-markdown-paragraph\"><code>clr strict security<\/code><span class=\"\"> \u2192 <\/span><code>0<\/code><\/p>\r\n<\/li>\r\n<li>\r\n<p class=\"ds-markdown-paragraph\"><strong><span class=\"\">SQL Server servisini yeniden ba\u015flat<\/span><\/strong><\/p>\r\n<\/li>\r\n<li>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">H\u00e2l\u00e2 \u00e7al\u0131\u015fm\u0131yorsa: <\/span><code>TRUSTWORTHY ON<\/code><span class=\"\"> + veritaban\u0131 sahibini ayarla<\/span><\/p>\r\n<\/li>\r\n<\/ol>\r\n<p class=\"ds-markdown-paragraph\"><span class=\"\">\u00c7o\u011fu durumda 1-4 aras\u0131 ad\u0131mlar sorunu \u00e7\u00f6zer. 5. ad\u0131m yaln\u0131zca eski\/yetki sorunlu veritabanlar\u0131nda gerekir.<\/span><\/p>\r\n<p><em><span class=\"\">Bu not, SQL Server 2017&#8217;ye ge\u00e7i\u015fte CLR tabanl\u0131 ERP uygulamalar\u0131nda ya\u015fanan &#8220;strict security&#8221; hatas\u0131 i\u00e7in haz\u0131rlanm\u0131\u015ft\u0131r.\u00a0<\/span><\/em><\/p>\r\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":4,"featured_media":2722,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,243,10],"tags":[],"class_list":["post-2721","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mikro","category-one-cikan","category-sql-server-tsql"],"_links":{"self":[{"href":"https:\/\/www.ozgurguler.net\/blog\/wp-json\/wp\/v2\/posts\/2721","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ozgurguler.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ozgurguler.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ozgurguler.net\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ozgurguler.net\/blog\/wp-json\/wp\/v2\/comments?post=2721"}],"version-history":[{"count":15,"href":"https:\/\/www.ozgurguler.net\/blog\/wp-json\/wp\/v2\/posts\/2721\/revisions"}],"predecessor-version":[{"id":4672,"href":"https:\/\/www.ozgurguler.net\/blog\/wp-json\/wp\/v2\/posts\/2721\/revisions\/4672"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ozgurguler.net\/blog\/wp-json\/wp\/v2\/media\/2722"}],"wp:attachment":[{"href":"https:\/\/www.ozgurguler.net\/blog\/wp-json\/wp\/v2\/media?parent=2721"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ozgurguler.net\/blog\/wp-json\/wp\/v2\/categories?post=2721"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ozgurguler.net\/blog\/wp-json\/wp\/v2\/tags?post=2721"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}