{"id":31845,"date":"2025-10-14T19:31:58","date_gmt":"2025-10-14T16:31:58","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/"},"modified":"2025-10-14T19:31:58","modified_gmt":"2025-10-14T16:31:58","slug":"azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/","title":{"rendered":"Azure SQL&#8217;de Gizli Cevherler: Bilmeniz Gereken Komutlar ve Fonksiyonlar"},"content":{"rendered":"<p><body><\/p>\n<p>Azure SQL Veritaban\u0131, bulut ortam\u0131nda y\u00f6netilen, y\u00fcksek performansl\u0131 ve \u00f6l\u00e7eklenebilir bir veri \u00e7\u00f6z\u00fcm\u00fcd\u00fcr. Peki, bu g\u00fcc\u00fcn tamam\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131zdan emin misiniz? \u00c7o\u011fu geli\u015ftirici ve veritaban\u0131 y\u00f6neticisi, Azure SQL&#8217;in sundu\u011fu standart T-SQL \u00f6zelliklerine a\u015fina olsa da, g\u00f6zden ka\u00e7an baz\u0131 komutlar, fonksiyonlar ve anahtar kelimeler, performans\u0131n\u0131z\u0131 art\u0131rman\u0131n, maliyetlerinizi d\u00fc\u015f\u00fcrmenin ve g\u00fcvenli\u011fi sa\u011flaman\u0131n anahtar\u0131 olabilir. Bu makalede, Azure SQL&#8217;deki bu &#8220;gizli cevherleri&#8221; ke\u015ffedecek, ger\u00e7ek d\u00fcnya senaryolar\u0131yla destekleyerek, veritaban\u0131 y\u00f6netim deneyiminizi bir \u00fcst seviyeye ta\u015f\u0131yaca\u011f\u0131z.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla de\u011fi\u015fen dijital d\u00fcnyas\u0131nda, i\u015fletmelerin veri depolama ve i\u015fleme ihtiya\u00e7lar\u0131 s\u00fcrekli olarak artmaktad\u0131r. Bu noktada, Microsoft Azure SQL Veritaban\u0131, y\u00f6netilen bir hizmet (PaaS) olarak sundu\u011fu avantajlarla \u00f6ne \u00e7\u0131kmaktad\u0131r. Geleneksel \u015firket i\u00e7i veritaban\u0131 y\u00f6netiminin getirdi\u011fi altyap\u0131 maliyetleri, bak\u0131m y\u00fck\u00fc ve \u00f6l\u00e7eklenebilirlik k\u0131s\u0131tlamalar\u0131, Azure SQL ile ortadan kalkmaktad\u0131r. Veritaban\u0131n\u0131z\u0131n donan\u0131m, i\u015fletim sistemi yamalar\u0131, yedekleme ve y\u00fcksek eri\u015filebilirlik gibi kritik g\u00f6revleri Azure taraf\u0131ndan otomatik olarak y\u00f6netilirken, siz \u00e7ekirdek i\u015finize odaklanabilirsiniz. Ancak bu kolayl\u0131k, bazen Azure SQL&#8217;in kendine \u00f6zg\u00fc dinamiklerini ve sundu\u011fu \u00f6zel ara\u00e7lar\u0131 g\u00f6z ard\u0131 etmemize neden olabilir. Standart SQL Server&#8217;a k\u0131yasla farkl\u0131l\u0131k g\u00f6steren y\u00f6netim g\u00f6r\u00fcn\u00fcmleri, otomatik ayarlama yetenekleri ve bulut tabanl\u0131 g\u00fcvenlik \u00f6zellikleri, bilin\u00e7li kullan\u0131lmad\u0131\u011f\u0131nda tam potansiyeline ula\u015famayabilir.<\/p>\n<p>Bu makalede ele alaca\u011f\u0131m\u0131z &#8220;gizli cevherler&#8221;, veritaban\u0131 performans\u0131n\u0131z\u0131 optimize etmekten, olas\u0131 g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmaya, beklenmedik maliyet art\u0131\u015flar\u0131n\u0131 engellemeye ve g\u00fcnl\u00fck operasyonlar\u0131 kolayla\u015ft\u0131rmaya kadar geni\u015f bir yelpazeyi kapsar. \u00d6rne\u011fin, bir startup d\u00fc\u015f\u00fcn\u00fcn. Geleneksel bir SQL Server altyap\u0131s\u0131 kurmak yerine Azure SQL&#8217;i tercih ettiler. Ba\u015flang\u0131\u00e7ta her \u015fey yolundayd\u0131, ancak kullan\u0131c\u0131 say\u0131s\u0131 artt\u0131k\u00e7a ve veri hacmi geni\u015fledik\u00e7e, uygulamada gecikmeler ya\u015fanmaya ba\u015flad\u0131. Veritaban\u0131 sunucusunun kaynak t\u00fcketimi normal g\u00f6r\u00fcn\u00fcyordu, fakat sorgular\u0131n yava\u015f \u00e7al\u0131\u015ft\u0131\u011f\u0131 g\u00f6zlemleniyordu. Geli\u015ftirme ekibi, temel SQL sorgu performans iyile\u015ftirmelerini denese de, sorunun k\u00f6k nedenini bulmakta zorland\u0131. \u0130\u015fte tam bu noktada, Azure SQL&#8217;e \u00f6zel Dinamik Y\u00f6netim G\u00f6r\u00fcn\u00fcmleri (DMV&#8217;ler) ve otomatik ayarlama \u00f6zellikleri devreye girdi. Bu ara\u00e7lar sayesinde, en pahal\u0131 sorgular\u0131n belirlenmesi, eksik indeks \u00f6nerilerinin al\u0131nmas\u0131 ve hatta Azure&#8217;un kendi yapay zekas\u0131n\u0131n performans sorunlar\u0131n\u0131 otomatik olarak gidermesi m\u00fcmk\u00fcn oldu. Bu sayede, startup hem m\u00fc\u015fteri memnuniyetini art\u0131rd\u0131 hem de altyap\u0131 i\u00e7in harcayaca\u011f\u0131 zaman\u0131 \u00fcr\u00fcn geli\u015ftirmeye ay\u0131rd\u0131.<\/p>\n<p>Azure SQL&#8217;in bulut do\u011fas\u0131, s\u00fcrekli izleme ve optimizasyon gerektirse de, do\u011fru komut ve fonksiyon setine hakim olmak bu s\u00fcreci b\u00fcy\u00fck \u00f6l\u00e7\u00fcde basitle\u015ftirir. Bu \u00f6zellikler, yaln\u0131zca sorun giderme anlar\u0131nda de\u011fil, ayn\u0131 zamanda proaktif olarak veritaban\u0131 sa\u011fl\u0131\u011f\u0131n\u0131 izlemek, g\u00fcvenlik duru\u015funu g\u00fc\u00e7lendirmek ve maliyetleri verimli bir \u015fekilde y\u00f6netmek i\u00e7in de kritik \u00f6neme sahiptir. Bu ba\u011flamda, Azure SQL&#8217;in sundu\u011fu her bir arac\u0131n ne i\u015fe yarad\u0131\u011f\u0131n\u0131 ve hangi senaryolarda kullan\u0131lmas\u0131 gerekti\u011fini anlamak, bulut veritaban\u0131 y\u00f6netimindeki ba\u015far\u0131n\u0131z\u0131n temelini olu\u015fturacakt\u0131r. Unutmay\u0131n, Azure SQL bir PaaS hizmeti olsa da, optimal performans ve maliyet verimlili\u011fi i\u00e7in aktif y\u00f6netim ve bilgi birikimi vazge\u00e7ilmezdir. Dolay\u0131s\u0131yla, bu &#8220;gizli cevherleri&#8221; \u00f6\u011frenmek, yaln\u0131zca mevcut sorunlar\u0131 \u00e7\u00f6zmekle kalmayacak, ayn\u0131 zamanda gelecekteki potansiyel problemlere kar\u015f\u0131 da sizi haz\u0131rlayacakt\u0131r.<\/p>\n<h2>Performans Optimizasyonu \u0130\u00e7in Hangi Komutlar\u0131 Kullanmal\u0131y\u0131z?<\/h2>\n<p>Veritaban\u0131 performans\u0131, herhangi bir uygulaman\u0131n kullan\u0131c\u0131 deneyimi i\u00e7in kritik \u00f6neme sahiptir. Azure SQL&#8217;de performans darbo\u011fazlar\u0131n\u0131 tespit etmek ve gidermek i\u00e7in standart SQL Server ara\u00e7lar\u0131n\u0131n yan\u0131 s\u0131ra, bulut ortam\u0131na \u00f6zel Dinamik Y\u00f6netim G\u00f6r\u00fcn\u00fcmleri (DMV&#8217;ler) ve indeksleme stratejileri b\u00fcy\u00fck fark yarat\u0131r. Bu b\u00f6l\u00fcmde, veritaban\u0131n\u0131z\u0131n derinliklerine inerek performans sorunlar\u0131n\u0131n k\u00f6k nedenlerini bulman\u0131za yard\u0131mc\u0131 olacak baz\u0131 g\u00fc\u00e7l\u00fc komutlar\u0131 ve teknikleri inceleyece\u011fiz.<\/p>\n<h3>Dinamik Y\u00f6netim G\u00f6r\u00fcn\u00fcmleri (DMV&#8217;ler) ile Performans\u0131 \u0130zlemek Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>DMV&#8217;ler, SQL Server&#8217;\u0131n mevcut durumu hakk\u0131nda sistem bilgileri sa\u011flayan sanal tablolard\u0131r. Azure SQL&#8217;de, sunucuya ve veritaban\u0131na \u00f6zel DMV&#8217;ler bulunur ve bunlar, \u00e7al\u0131\u015fan sorgular, oturumlar, disk G\/\u00c7, bellek kullan\u0131m\u0131 ve daha fazlas\u0131 hakk\u0131nda de\u011ferli bilgiler sunar. En s\u0131k kullan\u0131lan ve en faydal\u0131 DMV&#8217;lerden baz\u0131lar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><code>sys.dm_exec_requests<\/code>: \u015eu anda sunucuda \u00e7al\u0131\u015fan t\u00fcm istekleri listeler. Uzun s\u00fcren sorgular\u0131, blokajlar\u0131 (blocking) ve o anki durumu (status) belirlemek i\u00e7in idealdir.<\/li>\n<li><code>sys.dm_exec_sessions<\/code>: T\u00fcm aktif kullan\u0131c\u0131 oturumlar\u0131n\u0131 ve her oturumun kulland\u0131\u011f\u0131 kaynaklar\u0131 g\u00f6sterir. Belirli bir kullan\u0131c\u0131n\u0131n veya uygulaman\u0131n veritaban\u0131 \u00fczerindeki etkisini anlamak i\u00e7in faydal\u0131d\u0131r.<\/li>\n<li><code>sys.dm_exec_query_stats<\/code>: \u00d6n belle\u011fe al\u0131nm\u0131\u015f (cached) t\u00fcm sorgular\u0131n performans istatistiklerini i\u00e7erir. En \u00e7ok kaynak t\u00fcketen (CPU, G\/\u00c7) sorgular\u0131 bulmak i\u00e7in m\u00fckemmel bir kaynakt\u0131r.<\/li>\n<li><code>sys.dm_os_wait_stats<\/code>: SQL Server&#8217;\u0131n hangi kaynaklar\u0131 bekledi\u011fini g\u00f6sterir. Bu, performans sorunlar\u0131n\u0131n temel nedenini (disk G\/\u00c7, kilitlenmeler, bellek vb.) anlaman\u0131za yard\u0131mc\u0131 olur.<\/li>\n<\/ul>\n<p><strong>Vaka Analizi: E-ticaret Sitesinde Checkout Yava\u015flamas\u0131<\/strong><\/p>\n<p>Bir e-ticaret sitesi, \u00f6zellikle indirim d\u00f6nemlerinde, \u00f6deme (checkout) sayfas\u0131nda ciddi yava\u015flamalar ya\u015f\u0131yordu. M\u00fc\u015fteriler sepetlerini tamamlamakta zorlan\u0131yor, bu da sat\u0131\u015f kay\u0131plar\u0131na yol a\u00e7\u0131yordu. Geli\u015ftirme ekibi, sorunun veritaban\u0131nda oldu\u011funu d\u00fc\u015f\u00fcn\u00fcyordu ancak nereden ba\u015flayacaklar\u0131n\u0131 bilemiyorlard\u0131. \u0130lk ad\u0131m olarak, <code>sys.dm_exec_requests<\/code> ve <code>sys.dm_exec_query_stats<\/code> DMV&#8217;leri kullan\u0131larak yo\u011fun saatlerde veritaban\u0131 izlendi. \u015eu sorguyu \u00e7al\u0131\u015ft\u0131rarak en uzun s\u00fcren aktif istekler listelendi:<\/p>\n<pre><code class=\"language-sql\">\nSELECT\n    s.session_id,\n    r.status,\n    r.command,\n    r.start_time,\n    DATEDIFF(MILLISECOND, r.start_time, GETDATE()) AS elapsed_time_ms,\n    r.sql_handle,\n    t.text AS query_text\nFROM\n    sys.dm_exec_requests r\nINNER JOIN\n    sys.dm_exec_sessions s ON r.session_id = s.session_id\nOUTER APPLY\n    sys.dm_exec_sql_text(r.sql_handle) t\nWHERE\n    s.is_user_process = 1\nORDER BY\n    elapsed_time_ms DESC;\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, \u00f6deme sayfas\u0131ndan gelen bir sorgunun (<code>UPDATE<\/code> i\u015flemi) beklenenden \u00e7ok daha uzun s\u00fcrd\u00fc\u011f\u00fcn\u00fc ortaya koydu. Ard\u0131ndan, <code>sys.dm_exec_query_stats<\/code> kullan\u0131larak bu sorgunun detayl\u0131 performans ge\u00e7mi\u015fi incelendi ve sorgunun yo\u011fun bir tablo \u00fczerinde uygun olmayan bir indeksle \u00e7al\u0131\u015ft\u0131\u011f\u0131 anla\u015f\u0131ld\u0131. Bu, bizi bir sonraki konumuza, indeks y\u00f6netimine g\u00f6t\u00fcr\u00fcyor.<\/p>\n<h3>\u0130ndeks Y\u00f6netimi ve Eksik \u0130ndeksleri Bulma<\/h3>\n<p>\u0130ndeksler, veritaban\u0131 performans\u0131n\u0131n temel ta\u015flar\u0131ndan biridir. Do\u011fru indeksler sorgu h\u0131z\u0131n\u0131 katlayabilirken, eksik veya yanl\u0131\u015f indeksler ciddi yava\u015flamalara neden olabilir. Azure SQL, eksik indeksleri tespit etmenize yard\u0131mc\u0131 olacak g\u00fc\u00e7l\u00fc DMV'lere sahiptir:<\/p>\n<ul>\n<li><code>sys.dm_db_missing_index_details<\/code>: Sorgular\u0131n fayda sa\u011flayabilece\u011fi eksik indekslerin detaylar\u0131n\u0131 (tablo ad\u0131, s\u00fctunlar) verir.<\/li>\n<li><code>sys.dm_db_missing_index_groups<\/code>: Eksik indeks gruplar\u0131n\u0131 ve bu indeks gruplar\u0131na dahil olan indekslerin say\u0131s\u0131n\u0131 g\u00f6sterir.<\/li>\n<li><code>sys.dm_db_missing_index_columns<\/code>: Eksik indeksin hangi s\u00fctunlar\u0131 i\u00e7ermesi gerekti\u011fini belirtir.<\/li>\n<\/ul>\n<p>Yukar\u0131daki e-ticaret \u00f6rne\u011finde, \u00f6deme sayfas\u0131ndaki yava\u015flamaya neden olan sorgunun, <code>Siparisler<\/code> tablosundaki <code>Durum<\/code> ve <code>KullaniciID<\/code> s\u00fctunlar\u0131 \u00fczerinde indekslenmedi\u011fi ortaya \u00e7\u0131kt\u0131. \u015eu sorguyu kullanarak eksik indeks \u00f6nerileri kolayca bulunabilir:<\/p>\n<pre><code class=\"language-sql\">\nSELECT\n    migs.avg_total_user_cost * (migs.avg_user_impact \/ 100.0) AS estimated_impact,\n    mid.statement AS table_name,\n    mid.equality_columns,\n    mid.inequality_columns,\n    mid.included_columns,\n    migs.unique_compiles,\n    migs.last_user_seek,\n    'CREATE INDEX IX_' + OBJECT_NAME(mid.object_id) + '_' + REPLACE(REPLACE(REPLACE(ISNULL(mid.equality_columns, '') + ISNULL(mid.inequality_columns, ''), '[', ''), ']', ''), ', ', '_') + ' ON ' + mid.statement + ' (' + ISNULL(mid.equality_columns, '') + CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ', ' ELSE '' END + ISNULL(mid.inequality_columns, '') + ')' + CASE WHEN mid.included_columns IS NOT NULL THEN ' INCLUDE (' + mid.included_columns + ')' ELSE '' END AS create_index_statement\nFROM\n    sys.dm_db_missing_index_groups migs\nINNER JOIN\n    sys.dm_db_missing_index_details mid ON migs.index_handle = mid.index_handle\nORDER BY\n    estimated_impact DESC;\n    <\/pre>\n<p><\/code><\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: Eksik indeks DMV'leri, size bir CREATE INDEX ifadesi bile sa\u011flayabilir! Ancak, her \u00f6neriyi k\u00f6r\u00fc k\u00f6r\u00fcne uygulamay\u0131n. Mevcut indekslerinizi, yazma performans\u0131n\u0131 ve depolama alan\u0131n\u0131 g\u00f6z \u00f6n\u00fcnde bulundurarak dikkatlice de\u011ferlendirin. \u00c7ok fazla indeks, yazma i\u015flemlerini yava\u015flatabilir.\n    <\/div>\n<p>Bu sorgu ile \u00fcretilen <code>CREATE INDEX<\/code> ifadesi \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131ktan sonra, e-ticaret sitesinin \u00f6deme sayfas\u0131ndaki performans sorunlar\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde giderildi. Azure SQL'in sundu\u011fu Otomatik Ayarlama (Automatic Tuning) \u00f6zelli\u011fi de baz\u0131 indeks olu\u015fturma ve sorgu plan\u0131 d\u00fczeltmelerini otomatik olarak yapabilir, ancak karma\u015f\u0131k senaryolarda manuel m\u00fcdahale hala gereklidir. Bu, Azure SQL'deki gizli cevherlerin sadece performans izleme de\u011fil, ayn\u0131 zamanda proaktif iyile\u015ftirme i\u00e7in ne kadar \u00f6nemli oldu\u011funu g\u00f6stermektedir.<\/p>\n<h3>Veritaban\u0131 Sa\u011fl\u0131\u011f\u0131n\u0131 \u0130zlemek \u0130\u00e7in Kullan\u0131\u015fl\u0131 Fonksiyonlar Nelerdir?<\/h3>\n<p>Veritaban\u0131 sa\u011fl\u0131\u011f\u0131n\u0131 s\u00fcrekli olarak izlemek, potansiyel sorunlar\u0131 proaktif bir \u015fekilde tespit etmenin ve sistemin genel istikrar\u0131n\u0131 sa\u011flaman\u0131n anahtar\u0131d\u0131r. T-SQL, bu ama\u00e7la kullanabilece\u011finiz bir dizi g\u00fc\u00e7l\u00fc fonksiyon ve komut sunar. Bu b\u00f6l\u00fcmde, veriler \u00fczerinde daha anlaml\u0131 i\u015flemler yapman\u0131z\u0131 sa\u011flayacak, raporlama ve bak\u0131m s\u00fcre\u00e7lerinizi kolayla\u015ft\u0131racak baz\u0131 temel ama \u00e7ok i\u015flevsel T-SQL ara\u00e7lar\u0131na odaklanaca\u011f\u0131z.<\/p>\n<h4>Zaman Serisi Analizi ve Veri Manip\u00fclasyonu i\u00e7in Fonksiyonlar<\/h4>\n<p>Veritaban\u0131 i\u015flemleri genellikle zaman damgalar\u0131 ile ili\u015fkilidir. Verilerin ne zaman olu\u015fturuldu\u011fu, g\u00fcncellendi\u011fi veya silindi\u011fi bilgisi, performans\u0131, log analizi ve raporlamay\u0131 anlamak i\u00e7in hayati \u00f6neme sahiptir. <code>DATEADD<\/code> ve <code>DATEDIFF<\/code> gibi fonksiyonlar, zaman serisi verileriyle \u00e7al\u0131\u015f\u0131rken vazge\u00e7ilmezdir:<\/p>\n<ul>\n<li><code>DATEADD (datepart, number, date)<\/code>: Belirtilen tarihe belirli bir zaman aral\u0131\u011f\u0131 (y\u0131l, ay, g\u00fcn, saat vb.) ekler. \u00d6rne\u011fin, bir ay sonraki tarihi bulmak veya 15 dakika sonraki bir zaman\u0131 hesaplamak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><code>DATEDIFF (datepart, startdate, enddate)<\/code>: \u0130ki tarih aras\u0131ndaki belirtilen zaman aral\u0131\u011f\u0131n\u0131n (y\u0131l, ay, g\u00fcn, saat vb.) fark\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr. \u00d6rne\u011fin, iki i\u015flem aras\u0131ndaki s\u00fcreyi saniye cinsinden bulmak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<\/ul>\n<p>Bu fonksiyonlar, \u00f6rne\u011fin, son 24 saatteki ba\u015far\u0131s\u0131z giri\u015f denemelerini saymak veya belirli bir i\u015flemi tamamlaman\u0131n ortalama ne kadar s\u00fcrd\u00fc\u011f\u00fcn\u00fc hesaplamak gibi senaryolarda kritik rol oynar. Ayr\u0131ca, <code>GETDATE()<\/code> ve <code>GETUTCDATE()<\/code> gibi fonksiyonlar, mevcut zaman\u0131 almak i\u00e7in kullan\u0131l\u0131r ve zaman serisi analizinin temelini olu\u015fturur.<\/p>\n<p><strong>Ko\u015fullu Mant\u0131k ve Veri Formatlama<\/strong><\/p>\n<p>Daha temiz ve okunabilir sorgular yazmak i\u00e7in <code>IIF<\/code> ve <code>CHOOSE<\/code> gibi ko\u015fullu mant\u0131k fonksiyonlar\u0131 olduk\u00e7a faydal\u0131d\u0131r:<\/p>\n<ul>\n<li><code>IIF (boolean_expression, true_value, false_value)<\/code>: Basit bir boolean ifadeye dayal\u0131 olarak iki de\u011ferden birini d\u00f6nd\u00fcr\u00fcr. <code>CASE<\/code> ifadesinin daha k\u0131sa bir versiyonu gibidir.<\/li>\n<li><code>CHOOSE (index, val1, val2, ..., valN)<\/code>: Bir indeks de\u011ferine g\u00f6re listeden bir \u00f6\u011fe se\u00e7er. \u00d6zellikle sabit se\u00e7enek listelerinden bir de\u011fer se\u00e7mek gerekti\u011finde kullan\u0131\u015fl\u0131d\u0131r.<\/li>\n<li><code>FORMAT (value, format_string [, culture])<\/code>: Say\u0131sal, tarih\/saat veya di\u011fer t\u00fcrdeki de\u011ferleri belirli bir format string'ine g\u00f6re bi\u00e7imlendirir. Raporlamada \u00e7\u0131kt\u0131lar\u0131n d\u00fczenlenmesi i\u00e7in idealdir. \u00d6rne\u011fin, bir tarihi 'yyyy-MM-dd HH:mm:ss' format\u0131nda g\u00f6stermek i\u00e7in kullan\u0131labilir.<\/li>\n<\/ul>\n<p><strong>Vaka Analizi: Bankac\u0131l\u0131k Uygulamas\u0131nda Log Temizli\u011fi ve Raporlama<\/strong><\/p>\n<p>Bir bankac\u0131l\u0131k uygulamas\u0131, g\u00fcvenlik denetimi i\u00e7in \u00e7ok say\u0131da i\u015flem logu \u00fcretiyordu. Bu loglar h\u0131zla b\u00fcy\u00fcyor, depolama maliyetlerini art\u0131r\u0131yor ve sorgu performans\u0131n\u0131 d\u00fc\u015f\u00fcr\u00fcyordu. Ayn\u0131 zamanda, haftal\u0131k olarak son 7 g\u00fcn\u00fcn \u00f6zet raporlar\u0131n\u0131 \u00e7\u0131karmalar\u0131 gerekiyordu.<\/p>\n<pre><code class=\"language-sql\">\n-- Yedi g\u00fcnden eski loglar\u0131 temizle\nDELETE FROM [AuditLogs]\nWHERE LogDate < DATEADD(DAY, -7, GETDATE());\n\n-- Veya, e\u011fer tablo tamamen temizlenecek ve indeksler yeniden olu\u015fturulacaksa, daha h\u0131zl\u0131 bir yol:\n-- TRUNCATE TABLE [OldAuditLogsTable]; -- E\u011fer t\u00fcm tabloyu temizliyorsak ve log tablosunu rotate ediyorsak.\n    <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki kod blo\u011funda <code>DATEADD<\/code> ve <code>GETDATE()<\/code> fonksiyonlar\u0131 kullan\u0131larak eski loglar silinmi\u015ftir. E\u011fer log tablosu zaman zaman tamamen bo\u015falt\u0131l\u0131p yeniden dolduruluyorsa, <code>TRUNCATE TABLE<\/code> komutu <code>DELETE<\/code> komutundan \u00e7ok daha performansl\u0131d\u0131r. <code>TRUNCATE TABLE<\/code>, tablonun t\u00fcm sat\u0131rlar\u0131n\u0131 h\u0131zl\u0131 bir \u015fekilde kald\u0131r\u0131r ve i\u015flem logu boyutunu minimumda tutar, ancak <code>WHERE<\/code> ko\u015fuluyla kullan\u0131lamaz ve geri al\u0131namaz bir i\u015flemdir. <code>DELETE<\/code> ise her sat\u0131r\u0131 tek tek siler ve i\u015flem logunu daha fazla kullan\u0131r, ancak belirli ko\u015fullara uyan sat\u0131rlar\u0131 hedefleyebilir.<\/p>\n<p>Raporlama taraf\u0131nda ise, <code>FORMAT<\/code> fonksiyonu ile tarih ve saat bilgileri okunabilir hale getirildi ve <code>IIF<\/code> ile i\u015flemlerin ba\u015far\u0131 durumlar\u0131 g\u00f6rsel olarak daha net bir \u015fekilde sunuldu.<\/p>\n<pre><code class=\"language-sql\">\nSELECT\n    FORMAT(LogDate, 'yyyy-MM-dd HH:mm:ss') AS IslemZamani,\n    KullaniciAdi,\n    IslemTipi,\n    IIF(IslemBasarili = 1, 'Ba\u015far\u0131l\u0131', 'Ba\u015far\u0131s\u0131z') AS Durum,\n    Mesaj\nFROM\n    [AuditLogs]\nWHERE\n    LogDate >= DATEADD(DAY, -7, GETDATE());\n    <\/pre>\n<p><\/code><\/p>\n<h4>String \u0130\u015fleme ve JSON Fonksiyonlar\u0131<\/h4>\n<p>Modern uygulamalar s\u0131k\u00e7a JSON verisiyle \u00e7al\u0131\u015f\u0131r. Azure SQL, JSON verilerini sorgulamak ve manip\u00fcle etmek i\u00e7in g\u00fc\u00e7l\u00fc dahili fonksiyonlar sunar:<\/p>\n<ul>\n<li><code>STRING_SPLIT (string, separator)<\/code>: Bir string ifadeyi belirli bir ay\u0131r\u0131c\u0131ya g\u00f6re b\u00f6ler ve her bir par\u00e7ay\u0131 ayr\u0131 bir sat\u0131r olarak d\u00f6nd\u00fcr\u00fcr. Etiketler veya virg\u00fclle ayr\u0131lm\u0131\u015f listeler gibi verilerle \u00e7al\u0131\u015f\u0131rken \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/li>\n<li><code>JSON_VALUE (expression, path)<\/code>: Bir JSON string'inden belirli bir yolu kullanarak skaler bir de\u011feri ay\u0131klar.<\/li>\n<li><code>JSON_QUERY (expression, path)<\/code>: Bir JSON string'inden belirli bir yolu kullanarak bir JSON nesnesi veya dizisi ay\u0131klar.<\/li>\n<li><code>FOR JSON PATH<\/code> veya <code>FOR JSON AUTO<\/code>: SQL sorgu sonu\u00e7lar\u0131n\u0131 do\u011frudan JSON format\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcr, bu da API geli\u015ftirme s\u00fcre\u00e7lerini basitle\u015ftirir.<\/li>\n<\/ul>\n<pre><code class=\"language-sql\">\n-- Virg\u00fclle ayr\u0131lm\u0131\u015f bir listeyi par\u00e7ala\nSELECT value FROM STRING_SPLIT('Elma,Armut,Kiraz', ',');\n\n-- JSON i\u00e7inden de\u011fer oku\nSELECT JSON_VALUE('{\"isim\": \"Ay\u015fe\", \"yas\": 30}', '$.isim') AS Adi;\n\n-- Sorgu sonucunu JSON olarak formatla\nSELECT id, ad, soyad FROM Kullanicilar FOR JSON PATH;\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu fonksiyonlar, veritaban\u0131 \u00fczerindeki operasyonlar\u0131 basitle\u015ftirmekle kalmaz, ayn\u0131 zamanda daha esnek ve g\u00fc\u00e7l\u00fc veri i\u015fleme yetenekleri sa\u011flar. \u00d6zellikle raporlama ve entegrasyon senaryolar\u0131nda, do\u011fru fonksiyonlar\u0131 bilmek size \u00f6nemli zaman kazand\u0131racakt\u0131r. Bu ara\u00e7lar, veritaban\u0131 sa\u011fl\u0131\u011f\u0131n\u0131z\u0131 izlemekten, verileri temizlemeye ve anlaml\u0131 hale getirmeye kadar geni\u015f bir yelpazede size yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h2>G\u00fcvenlik ve Y\u00f6netimde Azure SQL'in Gizli Silahlar\u0131 Nelerdir?<\/h2>\n<p>Veritaban\u0131 g\u00fcvenli\u011fi, herhangi bir i\u015fletme i\u00e7in en \u00fcst d\u00fczeyde \u00f6nceliklidir, \u00f6zellikle de hassas verilerle \u00e7al\u0131\u015f\u0131l\u0131yorsa. Azure SQL, yerle\u015fik olarak bir\u00e7ok geli\u015fmi\u015f g\u00fcvenlik \u00f6zelli\u011fi sunar ancak bunlar\u0131n tam potansiyelini kullanmak, do\u011fru komutlar\u0131 ve teknikleri bilmeyi gerektirir. Y\u00f6netim taraf\u0131nda ise, otomasyon ve kaynak izleme, operasyonel y\u00fck\u00fc hafifletirken verimlili\u011fi art\u0131r\u0131r. Bu b\u00f6l\u00fcmde, Azure SQL'in g\u00fcvenlik ve y\u00f6netimdeki \"gizli silahlar\u0131n\u0131\" ke\u015ffedece\u011fiz.<\/p>\n<h3>Veri G\u00fcvenli\u011fini Art\u0131ran \u00d6zellikler: Always Encrypted, DDM ve RLS<\/h3>\n<p>Azure SQL, verilerinizin yetkisiz eri\u015fimden korunmas\u0131 i\u00e7in \u00fc\u00e7 temel mekanizma sunar:<\/p>\n<ul>\n<li><strong>Always Encrypted (Her Zaman \u015eifreleme):<\/strong> Bu \u00f6zellik, verilerin hassasiyeti ne olursa olsun, istemci taraf\u0131nda \u015fifrelenmesini sa\u011flar. Veritaban\u0131 y\u00f6neticileri (DBA'ler) veya bulut operat\u00f6rleri bile \u015fifrelenmi\u015f verilere eri\u015femez, bu da veri s\u0131z\u0131nt\u0131lar\u0131na kar\u015f\u0131 \u00fcst d\u00fczey bir koruma sa\u011flar. \u015eifreleme anahtarlar\u0131 m\u00fc\u015fteri kontrol\u00fcnde kal\u0131r. Bu, \u00f6zellikle sa\u011fl\u0131k ve finans gibi d\u00fczenlemelere tabi sekt\u00f6rler i\u00e7in vazge\u00e7ilmezdir.<\/li>\n<li><strong>Dynamic Data Masking (DDM - Dinamik Veri Maskeleme):<\/strong> DDM, hassas verileri yetkisiz kullan\u0131c\u0131lara if\u015fa etmeden maskeleyerek korur. \u00d6rne\u011fin, bir kullan\u0131c\u0131n\u0131n e-posta adresinin yaln\u0131zca bir k\u0131sm\u0131n\u0131 g\u00f6stermek (\u00f6rne\u011fin, <code>a***@example.com<\/code>) veya bir kredi kart\u0131 numaras\u0131n\u0131n son d\u00f6rt hanesini g\u00f6stermek gibi senaryolarda kullan\u0131l\u0131r. Veritaban\u0131nda veri ger\u00e7ek haliyle saklan\u0131r, ancak yetkisiz kullan\u0131c\u0131lar yaln\u0131zca maskelenmi\u015f bir g\u00f6r\u00fcn\u00fcm g\u00f6r\u00fcr. Bu, uygulamalarda herhangi bir de\u011fi\u015fiklik yapmadan kolayca uygulanabilir.<\/li>\n<li><strong>Row-Level Security (RLS - Sat\u0131r D\u00fczeyinde G\u00fcvenlik):<\/strong> RLS, bir veritaban\u0131 kullan\u0131c\u0131s\u0131n\u0131n eri\u015febilece\u011fi sat\u0131rlar\u0131 (kay\u0131tlar\u0131) kontrol etmenizi sa\u011flar. \u00d6rne\u011fin, bir sat\u0131\u015f temsilcisi yaln\u0131zca kendi sat\u0131\u015f verilerini g\u00f6rebilirken, y\u00f6neticisi t\u00fcm ekibin verilerini g\u00f6rebilir. Bu, uygulaman\u0131z\u0131n g\u00fcvenlik katman\u0131n\u0131 basitle\u015ftirir ve veri eri\u015fimini \u00e7ok daha hassas bir \u015fekilde y\u00f6netmenizi sa\u011flar.<\/li>\n<\/ul>\n<p><strong>Vaka Analizi: Sa\u011fl\u0131k Verileri Uygulamas\u0131nda KVKK Uyumlulu\u011fu<\/strong><\/p>\n<p>Bir sa\u011fl\u0131k hizmetleri sa\u011flay\u0131c\u0131s\u0131, hasta verilerini depolayan Azure SQL veritaban\u0131 \u00fczerinde KVKK (Ki\u015fisel Verilerin Korunmas\u0131 Kanunu) uyumlulu\u011funu sa\u011flamak zorundayd\u0131. Bu, hasta bilgilerinin gizlili\u011fini ve eri\u015fimini s\u0131k\u0131 bir \u015fekilde kontrol etmeyi gerektiriyordu. \u00c7\u00f6z\u00fcm olarak DDM ve RLS entegrasyonu yap\u0131ld\u0131:<\/p>\n<pre><code class=\"language-sql\">\n-- Dinamik Veri Maskeleme \u00f6rne\u011fi (e-posta adreslerinin bir k\u0131sm\u0131n\u0131 gizle)\nALTER TABLE Hastalar\nADD MASKED WITH (FUNCTION = 'email()') (EmailAdres);\n\n-- Sat\u0131r D\u00fczeyinde G\u00fcvenlik \u00f6rne\u011fi (Doktorlar sadece kendi hastalar\u0131n\u0131 g\u00f6rebilir)\nCREATE FUNCTION [dbo].[fn_RLS_HastaErisimi](@DoktorID AS int)\nRETURNS TABLE\nWITH SCHEMABINDING\nAS\n    RETURN SELECT 1 AS fn_RLS_HastaErisimi_Result\n    WHERE @DoktorID = CAST(SESSION_CONTEXT(N'current_user_id') AS int);\nGO\n\nCREATE SECURITY POLICY [RLS.HastaErisimiPolicy]\nADD FILTER PREDICATE [dbo].[fn_RLS_HastaErisimi](DoktorID)\nON dbo.Hastalar\nWITH (STATE = ON, SCHEMABINDING = OFF);\nGO\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu entegrasyon sayesinde, sa\u011fl\u0131k verileri uygulamas\u0131nda hastalar\u0131n e-posta adresleri otomatik olarak maskelenirken, her doktor yaln\u0131zca kendisine atanm\u0131\u015f hastalar\u0131n kay\u0131tlar\u0131na eri\u015febildi. Bu, hem g\u00fcvenlik ihlali riskini azaltt\u0131 hem de KVKK uyumlulu\u011funu sa\u011flad\u0131. Always Encrypted ise, \u00e7ok daha hassas veriler (\u00f6rne\u011fin, TC Kimlik Numaralar\u0131) i\u00e7in devreye al\u0131narak veritaban\u0131 seviyesinde ek bir koruma katman\u0131 olu\u015fturdu.<\/p>\n<h3>Azure Logic Apps\/Automation ile Y\u00f6netim ve Otomasyon<\/h3>\n<p>Azure SQL'i y\u00f6netmek sadece manuel komutlar \u00e7al\u0131\u015ft\u0131rmakla s\u0131n\u0131rl\u0131 de\u011fildir. Azure'\u0131n sundu\u011fu otomasyon ara\u00e7lar\u0131, rutin g\u00f6revleri otomatikle\u015ftirerek DBA'lerin ve geli\u015ftiricilerin y\u00fck\u00fcn\u00fc hafifletir:<\/p>\n<ul>\n<li><strong>Azure Logic Apps:<\/strong> Bu sunucusuz hizmet, farkl\u0131 sistemler aras\u0131nda i\u015f ak\u0131\u015flar\u0131 olu\u015fturman\u0131z\u0131 sa\u011flar. Azure SQL ile entegrasyonu sayesinde, veritaban\u0131nda bir de\u011fi\u015fiklik oldu\u011funda (\u00f6rne\u011fin, yeni bir kay\u0131t eklendi\u011finde) otomatik olarak e-posta g\u00f6ndermek, bir d\u0131\u015f API'yi tetiklemek veya ba\u015fka bir Azure hizmetini \u00e7al\u0131\u015ft\u0131rmak m\u00fcmk\u00fcnd\u00fcr. \u00d6rne\u011fin, performans kritik bir sorgu belirli bir e\u015fi\u011fi a\u015ft\u0131\u011f\u0131nda uyar\u0131 g\u00f6ndermek i\u00e7in kullan\u0131labilir.<\/li>\n<li><strong>Azure Automation:<\/strong> PowerShell runbook'lar\u0131 veya Python script'leri kullanarak Azure kaynaklar\u0131 \u00fczerinde tekrarlayan g\u00f6revleri otomatikle\u015ftirmenizi sa\u011flar. Azure SQL veritabanlar\u0131 i\u00e7in d\u00fczenli bak\u0131m g\u00f6revlerini (indeks yeniden d\u00fczenleme, istatistik g\u00fcncelleme), veritaban\u0131 \u00f6l\u00e7eklendirme i\u015flemlerini veya periyodik veri temizleme i\u015flerini otomatikle\u015ftirmek i\u00e7in idealdir.<\/li>\n<\/ul>\n<pre><code class=\"language-sql\">\n-- Azure Automation ile \u00e7al\u0131\u015ft\u0131r\u0131labilecek basit bir indeks yeniden d\u00fczenleme script'i\nALTER INDEX ALL ON [dbo].[TabloAdi] REORGANIZE;\n-- Alternatif olarak, daha b\u00fcy\u00fck par\u00e7alanma durumlar\u0131nda REBUILD:\n-- ALTER INDEX ALL ON [dbo].[TabloAdi] REBUILD WITH (ONLINE = ON);\n    <\/pre>\n<p><\/code><\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: Azure portal\u0131nda \"Automatic Tuning\" \u00f6zelli\u011fini etkinle\u015ftirmek, baz\u0131 indeks ve sorgu plan\u0131 optimizasyonlar\u0131n\u0131 sizin i\u00e7in otomatik olarak halleder. Ancak, karma\u015f\u0131k i\u015f y\u00fckleri i\u00e7in manuel m\u00fcdahaleler veya Azure Automation ile \u00f6zel script'ler \u00e7al\u0131\u015ft\u0131rmak hala \u00f6nemlidir.\n    <\/div>\n<p>Bu otomasyon ara\u00e7lar\u0131, Azure SQL'in operasyonel y\u00f6netimini daha verimli hale getirir. Periyodik g\u00f6revlerin manuel m\u00fcdahale olmaks\u0131z\u0131n \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayarak insan hatas\u0131 riskini azalt\u0131r ve veritaban\u0131 y\u00f6neticilerinin daha stratejik g\u00f6revlere odaklanmas\u0131na olanak tan\u0131r. G\u00fcvenlik taraf\u0131nda ise, bu otomasyonlar g\u00fcvenlik denetimlerini veya politika kontrollerini d\u00fczenli olarak \u00e7al\u0131\u015ft\u0131rmak i\u00e7in de kullan\u0131labilir, b\u00f6ylece veritaban\u0131n\u0131z\u0131n her zaman g\u00fcncel g\u00fcvenlik standartlar\u0131na uygun kalmas\u0131n\u0131 sa\u011flars\u0131n\u0131z.<\/p>\n<h2>Maliyet Optimizasyonu \u0130\u00e7in Hangi Y\u00f6ntemleri Kullanmal\u0131y\u0131z?<\/h2>\n<p>Azure SQL'in cazip \u00f6zelliklerinden biri de \u00f6l\u00e7eklenebilirli\u011fi ve \"kulland\u0131\u011f\u0131n kadar \u00f6de\" modelidir. Ancak bu esneklik, ayn\u0131 zamanda maliyetlerin iyi y\u00f6netilmesini gerektirir. Yanl\u0131\u015f kaynak tahsisi veya verimsiz kullan\u0131m, beklenmedik faturalara yol a\u00e7abilir. Bu b\u00f6l\u00fcmde, Azure SQL maliyetlerinizi optimize etmenize yard\u0131mc\u0131 olacak y\u00f6ntemleri ve komutlar\u0131 inceleyece\u011fiz.<\/p>\n<h3>Kaynak T\u00fcketimi \u0130zleme ve Analizi<\/h3>\n<p>Maliyet optimizasyonunun ilk ad\u0131m\u0131, kaynak t\u00fcketimini anlamakt\u0131r. Azure SQL, veritaban\u0131n\u0131z\u0131n ve sunucunuzun CPU, bellek, G\/\u00c7 ve i\u015flem g\u00fcnl\u00fc\u011f\u00fc kullan\u0131m\u0131n\u0131 izlemek i\u00e7in g\u00fc\u00e7l\u00fc DMV'ler sunar:<\/p>\n<ul>\n<li><code>sys.dm_db_resource_stats<\/code>: Bir Azure SQL veritaban\u0131 i\u00e7in son bir saat i\u00e7indeki kaynak kullan\u0131m istatistiklerini (CPU, G\/\u00c7, log G\/\u00c7, bellek) her 15 saniyede bir kaydeder. Anl\u0131k veya k\u0131sa vadeli performans sorunlar\u0131n\u0131 ve kaynak darbo\u011fazlar\u0131n\u0131 belirlemek i\u00e7in idealdir.<\/li>\n<li><code>sys.resource_stats<\/code>: Master veritaban\u0131nda bulunan bu g\u00f6r\u00fcn\u00fcm, t\u00fcm Azure SQL veritabanlar\u0131 i\u00e7in son 14 g\u00fcn i\u00e7indeki kaynak kullan\u0131m\u0131n\u0131 her 5 dakikada bir kaydeder. Uzun vadeli e\u011filimleri, yo\u011fun saatleri ve kapasite planlamas\u0131n\u0131 anlamak i\u00e7in \u00e7ok \u00f6nemlidir.<\/li>\n<\/ul>\n<p>Bu g\u00f6r\u00fcn\u00fcmlerden elde edilen verileri analiz ederek, veritaban\u0131n\u0131z\u0131n belirli zaman dilimlerinde a\u015f\u0131r\u0131 veya yetersiz kaynak kullan\u0131p kullanmad\u0131\u011f\u0131n\u0131 tespit edebilirsiniz. \u00d6rne\u011fin, gece saatlerinde CPU kullan\u0131m\u0131n\u0131n %5'in alt\u0131nda kald\u0131\u011f\u0131n\u0131, ancak g\u00fcn i\u00e7inde %90'lara \u00e7\u0131kt\u0131\u011f\u0131n\u0131 fark edebilirsiniz. Bu bilgi, do\u011fru performans katman\u0131n\u0131 se\u00e7mek veya sunucusuz (serverless) modeli de\u011ferlendirmek i\u00e7in kritik bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<pre><code class=\"language-sql\">\n-- Son bir saatteki kaynak kullan\u0131m\u0131n\u0131 kontrol et\nSELECT\n    end_time,\n    avg_cpu_percent,\n    avg_data_io_percent,\n    avg_log_write_percent,\n    avg_memory_usage_percent\nFROM\n    sys.dm_db_resource_stats\nORDER BY\n    end_time DESC;\n\n-- Son 14 g\u00fcndeki genel kaynak kullan\u0131m\u0131n\u0131 kontrol et (master veritaban\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131n)\nSELECT\n    start_time,\n    end_time,\n    avg_cpu_percent,\n    avg_data_io_percent,\n    avg_log_write_percent,\n    dtu_consumption_percent\nFROM\n    sys.resource_stats\nWHERE\n    database_name = 'YourDatabaseName'\nORDER BY\n    end_time DESC;\n    <\/pre>\n<p><\/code><\/p>\n<h3>Do\u011fru Performans Katman\u0131n\u0131 Se\u00e7me: DTU, vCore, Elastic Pools ve Serverless<\/h3>\n<p>Azure SQL, farkl\u0131 i\u015f y\u00fck\u00fc ihtiya\u00e7lar\u0131na uygun \u00e7e\u015fitli performans katmanlar\u0131 ve sat\u0131n alma modelleri sunar. Do\u011fru se\u00e7imi yapmak, maliyetleri \u00f6nemli \u00f6l\u00e7\u00fcde etkiler:<\/p>\n<ul>\n<li><strong>DTU (Veritaban\u0131 \u0130\u015flem Birimi) Modeli:<\/strong> Basit ve tahmin edilebilir i\u015f y\u00fckleri i\u00e7in uygundur. CPU, G\/\u00c7 ve i\u015flem g\u00fcnl\u00fc\u011f\u00fc kaynaklar\u0131n\u0131 tek bir \u00f6l\u00e7\u00fcmde birle\u015ftirir. K\u00fc\u00e7\u00fck veya orta \u00f6l\u00e7ekli veritabanlar\u0131 i\u00e7in kolay bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/li>\n<li><strong>vCore Modeli:<\/strong> Daha karma\u015f\u0131k ve y\u00fcksek performans gerektiren i\u015f y\u00fckleri i\u00e7in uygundur. CPU, bellek ve G\/\u00c7 kaynaklar\u0131n\u0131 ayr\u0131 ayr\u0131 yap\u0131land\u0131rma ve \u00f6l\u00e7eklendirme esnekli\u011fi sunar. Mevcut \u015firket i\u00e7i SQL Server lisanslar\u0131n\u0131z\u0131 Azure'a ta\u015f\u0131yarak (Azure Hybrid Benefit) maliyet avantaj\u0131 sa\u011flayabilir.<\/li>\n<li><strong>Elastic Pools (Esnek Havuzlar):<\/strong> Birden \u00e7ok veritaban\u0131n\u0131n ortak bir kaynak havuzunu payla\u015ft\u0131\u011f\u0131 senaryolar i\u00e7in idealdir. \u00d6zellikle tahmin edilemeyen ve ani pikler g\u00f6steren, ancak toplamda ayn\u0131 anda y\u00fcksek kaynak kullan\u0131m\u0131 gerektirmeyen veritabanlar\u0131 i\u00e7in maliyet etkilidir. \u00d6rne\u011fin, y\u00fczlerce m\u00fc\u015fterinin her birinin kendi veritaban\u0131na sahip oldu\u011fu SaaS uygulamalar\u0131.<\/li>\n<li><strong>Serverless (Sunucusuz) Modeli:<\/strong> Azure SQL'in en yeni ve maliyet etkin se\u00e7eneklerinden biridir. Yo\u011funluklu olmayan, aral\u0131kl\u0131 ve tahmin edilemeyen i\u015f y\u00fckleri i\u00e7in tasarlanm\u0131\u015ft\u0131r. Veritaban\u0131 otomatik olarak kaynaklar\u0131n\u0131 \u00f6l\u00e7eklendirir ve etkinlik olmad\u0131\u011f\u0131 zamanlarda otomatik olarak duraklat\u0131l\u0131r (pause). Sadece kaynak kullan\u0131ld\u0131\u011f\u0131 zaman \u00f6deme yap\u0131l\u0131r. Geli\u015ftirme\/test ortamlar\u0131 veya seyrek kullan\u0131lan uygulamalar i\u00e7in m\u00fckemmeldir.<\/li>\n<\/ul>\n<p><strong>Vaka Analizi: Geli\u015ftirme Ortam\u0131nda Maliyetleri D\u00fc\u015f\u00fcrmek<\/strong><\/p>\n<p>Bir yaz\u0131l\u0131m geli\u015ftirme \u015firketi, her geli\u015ftirme ekibi i\u00e7in ayr\u0131 bir Azure SQL veritaban\u0131 kullan\u0131yordu. Bu veritabanlar\u0131 g\u00fcn i\u00e7inde aktif olarak kullan\u0131l\u0131rken, geceleri ve hafta sonlar\u0131 tamamen bo\u015fta kal\u0131yordu. Geli\u015ftirme ortam\u0131 i\u00e7in vCore tabanl\u0131 \"Genel Ama\u00e7l\u0131\" katman\u0131 se\u00e7imi, ayl\u0131k maliyetleri olduk\u00e7a y\u00fckseltmi\u015fti. <code>sys.resource_stats<\/code> ile yap\u0131lan analizler, bu veritabanlar\u0131n\u0131n b\u00fcy\u00fck \u00e7o\u011funlu\u011funun %5'in alt\u0131nda CPU kullan\u0131m\u0131 sergiledi\u011fini ve uzun s\u00fcreler boyunca bo\u015fta kald\u0131\u011f\u0131n\u0131 g\u00f6sterdi.<\/p>\n<p>\u00c7\u00f6z\u00fcm olarak, geli\u015ftirme veritabanlar\u0131 Serverless modeline ge\u00e7irildi. Bu ge\u00e7i\u015f sayesinde, veritabanlar\u0131 etkinlik olmad\u0131\u011f\u0131 zamanlarda otomatik olarak duraklat\u0131ld\u0131 ve yaln\u0131zca aktif kullan\u0131m s\u0131ras\u0131nda kaynaklar i\u00e7in \u00f6deme yap\u0131ld\u0131. Bu de\u011fi\u015fiklik, geli\u015ftirme ortam\u0131 maliyetlerinde %70'e varan bir d\u00fc\u015f\u00fc\u015f sa\u011flad\u0131. Benzer \u015fekilde, birden fazla k\u00fc\u00e7\u00fck veritaban\u0131na sahip ve kaynak ihtiya\u00e7lar\u0131 birbirini dengeleyen bir SaaS uygulamas\u0131 i\u00e7in Elastic Pools modeline ge\u00e7i\u015f, bireysel veritabanlar\u0131 i\u00e7in ayr\u0131 ayr\u0131 kaynak ay\u0131rmaktan \u00e7ok daha uygun maliyetli olabilir.<\/p>\n<pre><code class=\"language-sql\">\n-- Mevcut veritaban\u0131n\u0131n servis amac\u0131n\u0131 Serverless olarak de\u011fi\u015ftirme \u00f6rne\u011fi (ALTER DATABASE komutuyla)\nALTER DATABASE [YourDatabaseName]\nMODIFY (SERVICE_OBJECTIVE = 'Serverless', MAX_SIZE = 10 GB, MIN_CPU = 0.5, MAX_CPU = 4, AUTO_PAUSE_DELAY_MINUTES = 60);\n    <\/pre>\n<p><\/code><\/p>\n<p>Maliyet optimizasyonu, tek seferlik bir i\u015flemden ziyade s\u00fcrekli bir izleme ve ayarlama s\u00fcrecidir. D\u00fczenli olarak kaynak t\u00fcketimini g\u00f6zden ge\u00e7irmek ve i\u015f y\u00fck\u00fcn\u00fcze en uygun performans modelini se\u00e7mek, Azure SQL'den en y\u00fcksek de\u011feri alman\u0131z\u0131 sa\u011flarken maliyetleri kontrol alt\u0131nda tutman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>Mobil Uyumlu Raporlama \u0130\u00e7in Ne Gibi \u0130pu\u00e7lar\u0131 Var?<\/h3>\n<p>Azure SQL'den \u00e7ekti\u011finiz verileri sunmak genellikle bir web uygulamas\u0131 veya raporlama arac\u0131 arac\u0131l\u0131\u011f\u0131yla yap\u0131l\u0131r. Kullan\u0131c\u0131lar\u0131n \u00e7o\u011fu art\u0131k mobil cihazlardan verilere eri\u015fti\u011fi i\u00e7in, mobil uyumlu raporlama ve veri sunumu kritik \u00f6neme sahiptir. SQL veritaban\u0131n\u0131n kendisi do\u011frudan mobil uyumluluk sa\u011flamasa da, verilerinizi sunan web aray\u00fczlerinde bu uyumlulu\u011fu sa\u011flamak i\u00e7in modern web geli\u015ftirme tekniklerini kullanabilirsiniz. \u0130\u015fte Azure SQL verilerini sunarken mobil uyumlulu\u011fu art\u0131rmak i\u00e7in baz\u0131 ipu\u00e7lar\u0131 ve bir \u00f6rnek:<\/p>\n<h4>Azure SQL Verilerinin Sunumu ve Mobil Uyumluluk<\/h4>\n<p>Azure SQL verileriniz genellikle bir API (\u00f6rne\u011fin, Azure Functions veya Azure App Service \u00fczerinde \u00e7al\u0131\u015fan bir REST API) arac\u0131l\u0131\u011f\u0131yla \u00e7ekilir ve bir frontend uygulamas\u0131na (React, Angular, Vue veya basit HTML\/CSS\/JavaScript) iletilir. Bu frontend uygulamas\u0131n\u0131n mobil uyumlu olmas\u0131 i\u00e7in Responsive Web Design (Duyarl\u0131 Web Tasar\u0131m\u0131) prensiplerini benimsemek gerekir.<\/p>\n<p>Bu prensipler, CSS Media Queries (Ortam Sorgular\u0131) kullanarak ekran boyutuna, cihaz y\u00f6nelimine ve \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011fe g\u00f6re farkl\u0131 stiller uygulamay\u0131 i\u00e7erir. A\u015fa\u011f\u0131da, Azure SQL'den \u00e7ekilen basit bir tablo verisini mobil cihazlarda daha iyi g\u00f6r\u00fcnt\u00fclemek i\u00e7in kullan\u0131labilecek temel bir HTML yap\u0131s\u0131 ve CSS Media Query \u00f6rne\u011fi bulunmaktad\u0131r.<\/p>\n<pre><code class=\"language-html\">\n<!-- Rapor Ba\u015fl\u0131\u011f\u0131 -->\n<h3>Azure SQL Veri Raporu<\/h3>\n\n<!-- Verilerin Listelendi\u011fi Tablo -->\n<table class=\"responsive-table\">\n    <thead>\n        <tr>\n            <th>\u00dcr\u00fcn Ad\u0131<\/th>\n            <th>Kategori<\/th>\n            <th>Stok Miktar\u0131<\/th>\n            <th>Son G\u00fcncelleme<\/th>\n        <\/tr>\n    <\/thead>\n    <tbody>\n        <!-- Bu k\u0131sma Azure SQL'den gelen veriler JavaScript ile dinamik olarak yerle\u015ftirilir -->\n        <tr>\n            <td data-label=\"\u00dcr\u00fcn Ad\u0131\">Diz\u00fcst\u00fc Bilgisayar<\/td>\n            <td data-label=\"Kategori\">Elektronik<\/td>\n            <td data-label=\"Stok Miktar\u0131\">150<\/td>\n            <td data-label=\"Son G\u00fcncelleme\">2023-10-26<\/td>\n        <\/tr>\n        <tr>\n            <td data-label=\"\u00dcr\u00fcn Ad\u0131\">Ak\u0131ll\u0131 Telefon<\/td>\n            <td data-label=\"Kategori\">Elektronik<\/td>\n            <td data-label=\"Stok Miktar\u0131\">300<\/td>\n            <td data-label=\"Son G\u00fcncelleme\">2023-10-25<\/td>\n        <\/tr>\n        <!-- ...daha fazla sat\u0131r... -->\n    <\/tbody>\n<\/table>\n    <\/pre>\n<p><\/code><\/p>\n<h4>CSS Media Query \u00d6rne\u011fi<\/h4>\n<p>Yukar\u0131daki HTML tablosunu mobil cihazlarda daha okunabilir hale getirmek i\u00e7in kullanabilece\u011finiz bir CSS Media Query \u00f6rne\u011fi:<\/p>\n<pre><code class=\"language-css\">\n\/* Genel tablo stilleri *\/\n.responsive-table {\n    width: 100%;\n    border-collapse: collapse;\n    margin: 1em 0;\n    box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);\n}\n\n.responsive-table th,\n.responsive-table td {\n    padding: 10px;\n    border: 1px solid #ddd;\n    text-align: left;\n}\n\n.responsive-table thead {\n    background-color: #f8f8f8;\n}\n\n\/* Mobil cihazlar i\u00e7in Media Query *\/\n@media screen and (max-width: 768px) {\n    .responsive-table thead {\n        display: none; \/* Ba\u015fl\u0131k sat\u0131r\u0131n\u0131 gizle *\/\n    }\n\n    .responsive-table, .responsive-table tbody, .responsive-table tr, .responsive-table td {\n        display: block; \/* Her eleman\u0131 blok seviyesinde g\u00f6ster *\/\n        width: 100%; \/* Tam geni\u015flik *\/\n    }\n\n    .responsive-table tr {\n        margin-bottom: 1em;\n        border: 1px solid #ddd;\n    }\n\n    .responsive-table td {\n        text-align: right; \/* Veri de\u011ferini sa\u011fa hizala *\/\n        padding-left: 50%; \/* Etiket i\u00e7in yer b\u0131rak *\/\n        position: relative;\n    }\n\n    .responsive-table td::before {\n        content: attr(data-label); \/* data-label niteli\u011fini etiket olarak kullan *\/\n        position: absolute;\n        left: 10px;\n        width: calc(50% - 20px);\n        padding-right: 10px;\n        white-space: nowrap;\n        text-align: left;\n        font-weight: bold;\n    }\n}\n    <\/pre>\n<p><\/code><\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: Azure Data Studio'daki Jupyter Notebook'lar\u0131 veya Power BI gibi ara\u00e7lar\u0131 kullanarak da Azure SQL verilerini g\u00f6rselle\u015ftirebilir ve payla\u015fabilirsiniz. Bu ara\u00e7lar genellikle kendili\u011finden responsive tasar\u0131m yeteneklerine sahiptir, bu da mobil cihazlarda daha iyi bir deneyim sunar. E\u011fer sadece veri analizi ve raporlama yap\u0131yorsan\u0131z, bu t\u00fcr haz\u0131r ara\u00e7lar geli\u015ftirme y\u00fck\u00fcn\u00fcz\u00fc azaltabilir.\n    <\/div>\n<p>Bu \u00f6rnekte, b\u00fcy\u00fck ekranlarda standart bir tablo g\u00f6r\u00fcn\u00fcm\u00fc sa\u011flan\u0131rken, ekran geni\u015fli\u011fi 768 pikselin alt\u0131na d\u00fc\u015ft\u00fc\u011f\u00fcnde (tipik tablet ve mobil ekran boyutlar\u0131 i\u00e7in), tablo ba\u015fl\u0131klar\u0131 gizlenir ve her bir sat\u0131r, etiketli kartlara d\u00f6n\u00fc\u015f\u00fcr. <code>data-label<\/code> niteli\u011fi, her h\u00fccrenin neyi temsil etti\u011fini mobil g\u00f6r\u00fcn\u00fcmde a\u00e7\u0131k\u00e7a belirtmek i\u00e7in kullan\u0131l\u0131r. Bu, Azure SQL'den gelen ham verileri kullan\u0131c\u0131 dostu ve eri\u015filebilir bir formatta sunman\u0131n temel bir yoludur.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Azure SQL, modern bulut uygulamalar\u0131n\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r ve sundu\u011fu \u00f6zellikler sadece temel veritaban\u0131 i\u015flemlerinden \u00e7ok daha fazlas\u0131n\u0131 kapsar. Bu makalede ele ald\u0131\u011f\u0131m\u0131z \"gizli cevherler\"\u2014Dinamik Y\u00f6netim G\u00f6r\u00fcn\u00fcmleri, geli\u015fmi\u015f T-SQL fonksiyonlar\u0131, g\u00fcvenlik \u00f6zellikleri ve maliyet optimizasyon stratejileri\u2014veritaban\u0131 y\u00f6netiminde kar\u015f\u0131la\u015fabilece\u011finiz bir\u00e7ok zorlu\u011fun \u00fcstesinden gelmenize yard\u0131mc\u0131 olabilir. Performans darbo\u011fazlar\u0131n\u0131 tespit etmekten, hassas verileri korumaya ve operasyonel maliyetleri d\u00fc\u015f\u00fcrmeye kadar, do\u011fru ara\u00e7lar\u0131 bilmek ve kullanmak, Azure SQL deneyiminizi k\u00f6kten de\u011fi\u015ftirecektir.<\/p>\n<p>Unutulmamal\u0131d\u0131r ki, Azure SQL gibi dinamik bir bulut hizmetinde s\u00fcrekli \u00f6\u011frenme ve ke\u015fif, en iyi uygulamalar\u0131 s\u00fcrd\u00fcrmek i\u00e7in esast\u0131r. Bu komutlar ve fonksiyonlar, sadece sorunlar\u0131 \u00e7\u00f6zmekle kalmaz, ayn\u0131 zamanda proaktif bir yakla\u015f\u0131mla veritaban\u0131 sa\u011fl\u0131\u011f\u0131n\u0131z\u0131 g\u00fcvence alt\u0131na alman\u0131za ve uygulamalar\u0131n\u0131z\u0131n her zaman en y\u00fcksek performansta \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flaman\u0131za olanak tan\u0131r. Art\u0131k bu gizli cevherlerle donat\u0131lm\u0131\u015f olarak, Azure SQL veritabanlar\u0131n\u0131z\u0131n tam potansiyelini a\u00e7\u0131\u011fa \u00e7\u0131karmaya haz\u0131rs\u0131n\u0131z.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<dl>\n<dt>Azure SQL'de en s\u0131k kar\u015f\u0131la\u015f\u0131lan performans sorunlar\u0131 nelerdir?<\/dt>\n<dd>Genellikle en s\u0131k kar\u015f\u0131la\u015f\u0131lan sorunlar yetersiz indeksleme, uzun s\u00fcren sorgular, blokajlar, y\u00fcksek CPU\/bellek t\u00fcketimi ve G\/\u00c7 darbo\u011fazlar\u0131d\u0131r. Bu sorunlar\u0131 tespit etmek i\u00e7in <code>sys.dm_exec_query_stats<\/code>, <code>sys.dm_exec_requests<\/code> ve <code>sys.dm_os_wait_stats<\/code> gibi DMV'ler kritik \u00f6neme sahiptir.<\/dd>\n<dt>DMV'leri g\u00fcnl\u00fck olarak kontrol etmeli miyim?<\/dt>\n<dd>G\u00fcnl\u00fck manuel kontrol yerine, Azure Monitor, Azure SQL Diagnostics veya Azure Automation ile otomatize edilmi\u015f uyar\u0131 sistemleri kurman\u0131z \u00f6nerilir. Kritik e\u015fikler a\u015f\u0131ld\u0131\u011f\u0131nda size bildirim gelmesini sa\u011flayarak proaktif bir yakla\u015f\u0131m sergileyebilirsiniz. Periyodik olarak, \u00f6rne\u011fin haftal\u0131k veya ayl\u0131k, daha derinlemesine analizler yapmak faydal\u0131 olacakt\u0131r.<\/dd>\n<dt>Otomatik ayarlama her zaman en iyi \u00e7\u00f6z\u00fcm m\u00fcd\u00fcr?<\/dt>\n<dd>Azure SQL'in otomatik ayarlama \u00f6zelli\u011fi (Automatic Tuning), bir\u00e7ok yayg\u0131n performans sorununu otomatik olarak \u00e7\u00f6zebilir ve genellikle iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Ancak, \u00e7ok \u00f6zel veya karma\u015f\u0131k i\u015f y\u00fckleri i\u00e7in her zaman en iyi \u00e7\u00f6z\u00fcm\u00fc sunmayabilir. \u00d6zellikle kritik uygulamalar i\u00e7in otomatik ayarlamay\u0131 dikkatlice izlemeli ve gerekti\u011finde manuel optimizasyonlarla desteklemelisiniz.<\/dd>\n<dt>Azure SQL maliyetini d\u00fc\u015f\u00fcrmek i\u00e7in en etkili yol nedir?<\/dt>\n<dd>En etkili yol, veritaban\u0131 kaynak kullan\u0131m\u0131n\u0131z\u0131 <code>sys.dm_db_resource_stats<\/code> ve <code>sys.resource_stats<\/code> ile d\u00fczenli olarak izlemektir. Ard\u0131ndan, i\u015f y\u00fck\u00fcn\u00fcze en uygun servis katman\u0131n\u0131 (DTU, vCore, Elastic Pools) ve modeli (Serverless) se\u00e7erek kaynaklar\u0131n\u0131z\u0131 optimize edin. Geli\u015ftirme\/test ortamlar\u0131 i\u00e7in Serverless modeli veya Azure Hybrid Benefit'i kullanmak \u00f6nemli tasarruflar sa\u011flayabilir.<\/dd>\n<dt>G\u00fcvenlik \u00f6zelliklerini (DDM, RLS, Always Encrypted) uygulamalar\u0131ma nas\u0131l entegre ederim?<\/dt>\n<dd>Dynamic Data Masking (DDM) ve Row-Level Security (RLS) genellikle veritaban\u0131 seviyesinde, uygulama kodunda \u00f6nemli de\u011fi\u015fiklikler yapmadan uygulanabilir. Sadece DDM i\u00e7in maskeleme fonksiyonlar\u0131n\u0131, RLS i\u00e7in g\u00fcvenlik politikalar\u0131n\u0131 ve filtre i\u015flevlerini tan\u0131mlaman\u0131z yeterlidir. Always Encrypted ise istemci taraf\u0131nda \u015fifreleme anahtarlar\u0131n\u0131n y\u00f6netilmesini gerektirir ve uygulaman\u0131z\u0131n veritaban\u0131yla etkile\u015fime giren ADO.NET, JDBC veya ODBC s\u00fcr\u00fcc\u00fclerinin bu \u00f6zelli\u011fi desteklemesi gerekir. Bu nedenle, uygulaman\u0131zda k\u00fc\u00e7\u00fck kod de\u011fi\u015fiklikleri gerekebilir.<\/dd>\n<\/dl>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Azure SQL Veritaban\u0131, bulut ortam\u0131nda y\u00f6netilen, y\u00fcksek performansl\u0131 ve \u00f6l\u00e7eklenebilir bir veri \u00e7\u00f6z\u00fcm\u00fcd\u00fcr. Peki, bu g\u00fcc\u00fcn tamam\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131zdan&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1405],"tags":[],"class_list":{"0":"post-31845","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-azure","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Azure SQL&#039;de Gizli Cevherler: Bilmeniz Gereken Komutlar ve Fonksiyonlar<\/title>\n<meta name=\"description\" content=\"Azure SQL Veritaban\u0131, bulut ortam\u0131nda y\u00f6netilen, y\u00fcksek performansl\u0131 ve \u00f6l\u00e7eklenebilir bir veri \u00e7\u00f6z\u00fcm\u00fcd\u00fcr. Peki, bu g\u00fcc\u00fcn tamam\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131zdan emin misiniz? \u00c7o\u011fu geli\u015ftirici ve veritaban\u0131 y\u00f6neticisi, Azure SQL&#039;in sundu\u011fu standart T-SQL \u00f6zelliklerine a\u015fina olsa da, g\u00f6zden ka\u00e7an baz\u0131 komutlar, fonksiyonlar ve anahtar kelimeler, performans\u0131n\u0131z\u0131 art\u0131rman\u0131n, maliyetlerinizi d\u00fc\u015f\u00fcrmenin ve g\u00fcvenli\u011fi sa\u011flaman\u0131n anahtar\u0131 olabilir. Bu makalede, Azure SQL&#039;deki bu &quot;gizli cevherleri&quot; ke\u015ffedecek, ger\u00e7ek d\u00fcnya senaryolar\u0131yla destekleyerek, veritaban\u0131 y\u00f6netim deneyiminizi bir \u00fcst seviyeye ta\u015f\u0131yaca\u011f\u0131z.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Azure SQL&#039;de Gizli Cevherler: Bilmeniz Gereken Komutlar ve Fonksiyonlar\" \/>\n<meta property=\"og:description\" content=\"Azure SQL Veritaban\u0131, bulut ortam\u0131nda y\u00f6netilen, y\u00fcksek performansl\u0131 ve \u00f6l\u00e7eklenebilir bir veri \u00e7\u00f6z\u00fcm\u00fcd\u00fcr. Peki, bu g\u00fcc\u00fcn tamam\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131zdan emin misiniz? \u00c7o\u011fu geli\u015ftirici ve veritaban\u0131 y\u00f6neticisi, Azure SQL&#039;in sundu\u011fu standart T-SQL \u00f6zelliklerine a\u015fina olsa da, g\u00f6zden ka\u00e7an baz\u0131 komutlar, fonksiyonlar ve anahtar kelimeler, performans\u0131n\u0131z\u0131 art\u0131rman\u0131n, maliyetlerinizi d\u00fc\u015f\u00fcrmenin ve g\u00fcvenli\u011fi sa\u011flaman\u0131n anahtar\u0131 olabilir. Bu makalede, Azure SQL&#039;deki bu &quot;gizli cevherleri&quot; ke\u015ffedecek, ger\u00e7ek d\u00fcnya senaryolar\u0131yla destekleyerek, veritaban\u0131 y\u00f6netim deneyiminizi bir \u00fcst seviyeye ta\u015f\u0131yaca\u011f\u0131z.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-14T16:31:58+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"28 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Azure SQL&#8217;de Gizli Cevherler: Bilmeniz Gereken Komutlar ve Fonksiyonlar\",\"datePublished\":\"2025-10-14T16:31:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/\"},\"wordCount\":4635,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Azure\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/\",\"name\":\"Azure SQL'de Gizli Cevherler: Bilmeniz Gereken Komutlar ve Fonksiyonlar\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-14T16:31:58+00:00\",\"description\":\"Azure SQL Veritaban\u0131, bulut ortam\u0131nda y\u00f6netilen, y\u00fcksek performansl\u0131 ve \u00f6l\u00e7eklenebilir bir veri \u00e7\u00f6z\u00fcm\u00fcd\u00fcr. Peki, bu g\u00fcc\u00fcn tamam\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131zdan emin misiniz? \u00c7o\u011fu geli\u015ftirici ve veritaban\u0131 y\u00f6neticisi, Azure SQL'in sundu\u011fu standart T-SQL \u00f6zelliklerine a\u015fina olsa da, g\u00f6zden ka\u00e7an baz\u0131 komutlar, fonksiyonlar ve anahtar kelimeler, performans\u0131n\u0131z\u0131 art\u0131rman\u0131n, maliyetlerinizi d\u00fc\u015f\u00fcrmenin ve g\u00fcvenli\u011fi sa\u011flaman\u0131n anahtar\u0131 olabilir. Bu makalede, Azure SQL'deki bu \\\"gizli cevherleri\\\" ke\u015ffedecek, ger\u00e7ek d\u00fcnya senaryolar\u0131yla destekleyerek, veritaban\u0131 y\u00f6netim deneyiminizi bir \u00fcst seviyeye ta\u015f\u0131yaca\u011f\u0131z.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Azure SQL&#8217;de Gizli Cevherler: Bilmeniz Gereken Komutlar ve Fonksiyonlar\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Azure SQL'de Gizli Cevherler: Bilmeniz Gereken Komutlar ve Fonksiyonlar","description":"Azure SQL Veritaban\u0131, bulut ortam\u0131nda y\u00f6netilen, y\u00fcksek performansl\u0131 ve \u00f6l\u00e7eklenebilir bir veri \u00e7\u00f6z\u00fcm\u00fcd\u00fcr. Peki, bu g\u00fcc\u00fcn tamam\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131zdan emin misiniz? \u00c7o\u011fu geli\u015ftirici ve veritaban\u0131 y\u00f6neticisi, Azure SQL'in sundu\u011fu standart T-SQL \u00f6zelliklerine a\u015fina olsa da, g\u00f6zden ka\u00e7an baz\u0131 komutlar, fonksiyonlar ve anahtar kelimeler, performans\u0131n\u0131z\u0131 art\u0131rman\u0131n, maliyetlerinizi d\u00fc\u015f\u00fcrmenin ve g\u00fcvenli\u011fi sa\u011flaman\u0131n anahtar\u0131 olabilir. Bu makalede, Azure SQL'deki bu \"gizli cevherleri\" ke\u015ffedecek, ger\u00e7ek d\u00fcnya senaryolar\u0131yla destekleyerek, veritaban\u0131 y\u00f6netim deneyiminizi bir \u00fcst seviyeye ta\u015f\u0131yaca\u011f\u0131z.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/","og_locale":"tr_TR","og_type":"article","og_title":"Azure SQL'de Gizli Cevherler: Bilmeniz Gereken Komutlar ve Fonksiyonlar","og_description":"Azure SQL Veritaban\u0131, bulut ortam\u0131nda y\u00f6netilen, y\u00fcksek performansl\u0131 ve \u00f6l\u00e7eklenebilir bir veri \u00e7\u00f6z\u00fcm\u00fcd\u00fcr. Peki, bu g\u00fcc\u00fcn tamam\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131zdan emin misiniz? \u00c7o\u011fu geli\u015ftirici ve veritaban\u0131 y\u00f6neticisi, Azure SQL'in sundu\u011fu standart T-SQL \u00f6zelliklerine a\u015fina olsa da, g\u00f6zden ka\u00e7an baz\u0131 komutlar, fonksiyonlar ve anahtar kelimeler, performans\u0131n\u0131z\u0131 art\u0131rman\u0131n, maliyetlerinizi d\u00fc\u015f\u00fcrmenin ve g\u00fcvenli\u011fi sa\u011flaman\u0131n anahtar\u0131 olabilir. Bu makalede, Azure SQL'deki bu \"gizli cevherleri\" ke\u015ffedecek, ger\u00e7ek d\u00fcnya senaryolar\u0131yla destekleyerek, veritaban\u0131 y\u00f6netim deneyiminizi bir \u00fcst seviyeye ta\u015f\u0131yaca\u011f\u0131z.","og_url":"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-14T16:31:58+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"28 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Azure SQL&#8217;de Gizli Cevherler: Bilmeniz Gereken Komutlar ve Fonksiyonlar","datePublished":"2025-10-14T16:31:58+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/"},"wordCount":4635,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Azure"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/","url":"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/","name":"Azure SQL'de Gizli Cevherler: Bilmeniz Gereken Komutlar ve Fonksiyonlar","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-14T16:31:58+00:00","description":"Azure SQL Veritaban\u0131, bulut ortam\u0131nda y\u00f6netilen, y\u00fcksek performansl\u0131 ve \u00f6l\u00e7eklenebilir bir veri \u00e7\u00f6z\u00fcm\u00fcd\u00fcr. Peki, bu g\u00fcc\u00fcn tamam\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131zdan emin misiniz? \u00c7o\u011fu geli\u015ftirici ve veritaban\u0131 y\u00f6neticisi, Azure SQL'in sundu\u011fu standart T-SQL \u00f6zelliklerine a\u015fina olsa da, g\u00f6zden ka\u00e7an baz\u0131 komutlar, fonksiyonlar ve anahtar kelimeler, performans\u0131n\u0131z\u0131 art\u0131rman\u0131n, maliyetlerinizi d\u00fc\u015f\u00fcrmenin ve g\u00fcvenli\u011fi sa\u011flaman\u0131n anahtar\u0131 olabilir. Bu makalede, Azure SQL'deki bu \"gizli cevherleri\" ke\u015ffedecek, ger\u00e7ek d\u00fcnya senaryolar\u0131yla destekleyerek, veritaban\u0131 y\u00f6netim deneyiminizi bir \u00fcst seviyeye ta\u015f\u0131yaca\u011f\u0131z.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/azure-sqlde-gizli-cevherler-bilmeniz-gereken-komutlar-ve-fonksiyonlar\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Azure SQL&#8217;de Gizli Cevherler: Bilmeniz Gereken Komutlar ve Fonksiyonlar"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=31845"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31845\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}