İçeriğe atla
Şimdi yükleniyor
AKAşkın KILIÇ
  • Anasayfa
  • Azure & Bulut
    • Microsoft Azure
    • Bulut Altyapı
    • Microsoft 365
  • Yazılım
    • DevOps
    • Geliştirici Araçları
    • Konteyner & K8s
  • AI & Veri
    • Yapay Zeka
    • Veri & Analitik
  • Güvenlik
    • Güvenlik & Kimlik
    • Kurumsal Teknoloji
  • Hakkımda
    • İletişim
×
  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka
  • Başlangıç
  • Geliştirici Araçları
  • SET NOCOUNT ON Neden Bu Kadar Önemli?
Bulut Altyapı Geliştirici Araçları NOCOUNT, performans, SQL Server, Stored Procedure, T-SQL Aşkın KILIÇ 16/07/2026 4 Yorumlar

SET NOCOUNT ON Neden Bu Kadar Önemli?

SET NOCOUNT ON Neden Bu Kadar Önemli?
📑 İçindekiler
  1. SET NOCOUNT Nedir, Ne İşe Yarar?
  2. Uygulama Geliştirici Perspektifi
  3. Basit Bir Örnek
  4. Ölçekte Anlam Kazanan Bir Kazanım
  5. İç İçe Procedure'lerde Davranış
  6. Transaction'lar İçinde Güvenli mi?
  7. Nelerin Bastırılmadığına Dikkat
  8. Sonuç
  9. İlgili İçerikler
  10. Kaynaklar ve İleri Okuma
⏱️ 3 dk okuma📅 16 Temmuz 2026

Bir stored procedure’ün ilk satırında SET NOCOUNT ON; ifadesini görüp neden orada olduğunu merak ettiyseniz, bu yazı tam size göre. Küçük bir ayar gibi görünse de doğru kullanıldığında ağ trafiğinden istemci tarafındaki işlem yüküne kadar birçok yerde fark yaratan bir T-SQL alışkanlığından bahsediyoruz.

İlgili içerik: BlockOnPossibleDataLoss=True: Neden Dostunuz?

SET NOCOUNT Nedir, Ne İşe Yarar?

SQL Server varsayılan olarak SET NOCOUNT OFF; ile çalışır. Bu durumda her ifadenin ardından istemciye “(10 rows affected)” gibi etkilenen satır sayısını bildiren bir mesaj gönderilir. SET NOCOUNT ON; ise bu mesajları bastırır; yani SQL Server artık her UPDATE, INSERT veya DELETE sonrası bu bilgilendirme mesajını iletmez.

Örneğin bir UPDATE 10 satırı değiştirdiğinde NOCOUNT OFF ile “(10 rows affected)” mesajı iletilirken, NOCOUNT ON ile herhangi bir satır sayısı mesajı gönderilmez.

Uygulama Geliştirici Perspektifi

.NET veya Entity Framework tabanlı bir uygulamada bu etkilenen satır mesajları genellikle görmezden gelinir. Uygulama kodu çoğunlukla dönen veriyle, output parametrelerle, return değerleriyle ya da açıkça döndürülmüş bir satır sayısıyla ilgilenir. Dolayısıyla kullanılmayan bu mesajları bastırmak; SQL Server, ağ ve istemci tarafında gereksiz iş yükünü azaltabilir.

Dikkat edilmesi gereken bir istisna var: SqlCommand.ExecuteNonQuery() kullanan kod, NOCOUNT etkinken etkilenen satır sayısı yerine -1 değeri alabilir. Uygulamanız gerçek satır sayısına ihtiyaç duyuyorsa @@ROWCOUNT değerini açıkça döndürmeniz gerekir.

Basit Bir Örnek

Aşağıdaki stored procedure eski siparişleri kapatır ve güncellenen satır sayısını döner:

CREATE PROCEDURE dbo.CloseOldOrders AS
BEGIN
SET NOCOUNT ON;
UPDATE dbo.Orders
SET Status = 'Closed'
WHERE ShipDate < GETDATE();
SELECT @@ROWCOUNT AS RowsUpdated;
END;

SET NOCOUNT ON; burada UPDATE işlemini engellemez, SELECT sonucunu bastırmaz, @@ROWCOUNT değerini devre dışı bırakmaz ve procedure’ün nihai sonucunu değiştirmez. Sadece ek olarak gönderilen “etkilenen satır” mesajını susturur.

Ölçekte Anlam Kazanan Bir Kazanım

Tek bir ifadedeki tasarruf küçüktür; ancak bu küçük tasarruflar birikir. 20 ifadeden oluşan bir procedure 100.000 kez çağrıldığında, yaklaşık 2 milyon gereksiz satır sayısı protokol token’ı elenebilir. Bu token’lar ağ paketlerini paylaşabilir olsa da yine de işlem yüküne yol açar. Döngüler, tetikleyiciler, çoklu güncellemeler ve iç içe procedure çağrıları bu sayıyı daha da büyütebilir. Bunları ortadan kaldırmak; ağ trafiğini, istemci tarafı işlem yükünü, gecikmeyi ve hesaplama tüketimini düşürebilir.

İç İçe Procedure’lerde Davranış

Bir stored procedure başka bir procedure çağırdığında, çağrılan procedure kendisi değiştirmedikçe mevcut NOCOUNT ayarı geçerli olmaya devam eder. İç procedure geri döndüğünde SQL Server, çağıran procedure’ün önceki ayarını yeniden geçerli kılar. Buna rağmen her procedure’ün kendi başına davranışının net ve bağımsız olması için SET NOCOUNT ON; ifadesini içermesi önerilir.

Transaction’lar İçinde Güvenli mi?

SET NOCOUNT ON; bir transaction içinde kullanıldığında kilitlemeyi, commit’i, rollback’i veya hata yönetimini etkilemez. Yalnızca etkilenen satır mesajlarının gönderilip gönderilmeyeceğini kontrol eder.

CREATE PROCEDURE dbo.CloseOrder
@OrderId int
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRANSACTION;
UPDATE dbo.Orders
SET Status = 'Closed'
WHERE OrderId = @OrderId;
INSERT INTO dbo.OrderHistory (OrderId, Status)
VALUES (@OrderId, 'Closed');
COMMIT;
SELECT @OrderId AS OrderId, 'Closed' AS Status;
END;

NOCOUNT OFF ile bu procedure, nihai sipariş durumunu döndürmeden önce iki adet etkilenen satır mesajı iletir. NOCOUNT ON ile ise yalnızca nihai sipariş durumunu döner. Transaction her iki durumda da tıpatıp aynı şekilde davranır; NOCOUNT yalnızca uygulamanın büyük olasılıkla göz ardı edeceği ara mesajları engeller.

Nelerin Bastırılmadığına Dikkat

SET NOCOUNT ON; yalnızca etkilenen satır mesajlarını susturur. PRINT veya RAISERROR tarafından üretilen mesajları bastırmaz. Ayrıca SELECT ile döndürülen sonuç kümelerini de etkilemez. Yani asıl veriniz her koşulda istemciye ulaşır; sadece protokol düzeyindeki bilgilendirme mesajları elenir.

Sonuç

SET NOCOUNT ON; küçük ama gerçek bir faydası olan bir alışkanlıktır..NET uygulamalarınızın genellikle ihtiyaç duymadığı mesajları kaldırır, gereksiz işi azaltır ve stored procedure davranışını daha öngörülebilir kılar. Bu mesajlara özel bir ihtiyacınız yoksa çoğu procedure için varsayılan tercihiniz olması mantıklıdır.

İlgili İçerikler

  • .NET 11’de Process API’si Neden Bu Kadar Önemli?
  • C#’ta Bellek Güvenliği Neden Şimdi Daha Önemli?
  • GitHub Copilot for Eclipse Açık Kaynağa Dönüyor: Neden Önemli?

Kaynaklar ve İleri Okuma

  • T-SQL Hygiene: What’s the Big Deal with SET NOCOUNT ON? – Jerry Nixon
  • SET NOCOUNT (Transact-SQL) – Microsoft Learn
  • Azure SQL Dev Corner
🤖Bu yazı yapay zeka (büyük dil modelleri) ile hazırlanmış, insan editör tarafından incelenmiştir. İçerik üretim sürecimiz.
Aşkın KILIÇ
Aşkın KILIÇYazar

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

İlgili Yazılar

GitHub Copilot’un PR Etkisi Ölçülüyor: Yeni Metrikler
GitHub Copilot’un PR Etkisi Ölçülüyor: Yeni Metrikler9 Nis 2026
GitHub Copilot JetBrains'te Inline Agent Modu Geldi
GitHub Copilot JetBrains'te Inline Agent Modu Geldi24 Nis 2026
MCP Apps Copilot Chat’te: İş Akışları Artık Konuşmanın İçinde
MCP Apps Copilot Chat’te: İş Akışları Artık Konuşmanın İçinde28 May 2026
Azure SDK Ekim 2025: Foundry Patladı, AI Search Sıçradı, Kimlikte Turbo Dönem
Azure SDK Ekim 2025: Foundry Patladı, AI Search Sıçradı, Kimlikte Turbo Dönem18 Mar 2026

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için YouTube ve GitHub hesaplarımı takip edin.

YouTube GitHub

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

Etiket NOCOUNT performans SQL Server Stored Procedure T-SQL
Önceki yazı

GitHub Secret Scanning ve Public Monitoring Güncellemeleri

Sonraki yazı

Office Add-ins için Birleşik Manifest Artık Genel Kullanımda

İlginizi Çekebilir

Microsoft SQL’de Hibrit Arama: Metin ve Vektörün Gücü
Aşkın KILIÇ 0

Microsoft SQL’de Hibrit Arama: Metin ve Vektörün Gücü

03/09/2026
GitHub Copilot AI Kodlamada Maliyeti Nasıl Düşürüyor
Aşkın KILIÇ 0

GitHub Copilot AI Kodlamada Maliyeti Nasıl Düşürüyor

03/09/2026
Visual Studio'da Çözüm Bazlı Renk Teması Nasıl Ayarlanır
Aşkın KILIÇ 1

Visual Studio’da Çözüm Bazlı Renk Teması Nasıl Ayarlanır

02/09/2026

4 comments

comments user
Mehmet K. 16/07/2026 20:31

Yıllarca bu mesajların ağ trafiğine etkisi olduğunu bilmeden saklı prosedür yazıp durdum. Özellikle döngü içinde binlerce kez çalışan proc’larda farkı gerçekten hissediyorsunuz. Peki EF Core tarafında bunu otomatik handle eden bir ayar var mı acaba?

Yanıtla
comments user
Murat Ö. 16/07/2026 22:37

Bunu yıllarca yazmadan geçtim, sonra bir performans sorununu araştırırken fark ettim ne kadar fark yarattığını. Özellikle yoğun stored procedure’lerde gerçekten gözle görülür bir etki yapıyor. Acaba EF Core bunu otomatik ekliyor mu merak ettim, araştırmam lazım.

Yanıtla
comments user
Cem A. 17/07/2026 04:24

Yıllarca bu mesajları görmezden geldim ama ağ trafiğine etkisi olduğunu hiç düşünmemiştim. Özellikle yoğun transaction’ların olduğu sistemlerde farkı ne kadar oluyor acaba, bunu test eden var mı aranızda?

Yanıtla
comments user
Fatma B. 17/07/2026 10:36

Bunu yıllarca fark etmeden geçirmişim, stored procedure’lerde neden bazen performans farkı olduğunu tam anlayamamıştım. Özellikle döngü içinde çok sayıda DML çalıştırıldığında farkın ne kadar büyüyebildiğini merak ediyorum, bununla ilgili bir benchmark paylaşmayı düşünür müsünüz?

Yanıtla

Yorum gönder Yanıtı iptal et

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • Gemini 3.8 Flash GitHub Copilot'ta Kullanıma Sunuldu
    03/09/2026 Gemini 3.8 Flash GitHub Copilot’ta Kullanıma Sunuldu
  • Kubernetes v1.37 HPA ile İş Yüklerini Sıfıra İndiriyor
    03/09/2026 Kubernetes v1.37 HPA ile İş Yüklerini Sıfıra İndiriyor
  • Microsoft SQL’de Hibrit Arama: Metin ve Vektörün Gücü
    03/09/2026 Microsoft SQL’de Hibrit Arama: Metin ve Vektörün Gücü
  • GitHub Copilot AI Kodlamada Maliyeti Nasıl Düşürüyor
    03/09/2026 GitHub Copilot AI Kodlamada Maliyeti Nasıl Düşürüyor
  • Ajanik Yapay Zekâ Terimleri: Loop, Harness ve Squad
    03/09/2026 Ajanik Yapay Zekâ Terimleri: Loop, Harness ve Squad
  • Copilot Cloud Agent Metriği: Kullanımı Ölçmek Kolaylaştı
    11/04/2026 Copilot Cloud Agent Metriği: Kullanımı Ölçmek Kolaylaştı
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
    07/04/2026 GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
  • GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
    03/04/2026 GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • vcpkg'de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
    06/04/2026 vcpkg’de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler
    10/04/2026 Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler

SİZİN İÇİN DERLEDİK

Gemini 3.8 Flash GitHub Copilot'ta Kullanıma Sunuldu
Microsoft Azure Yapay Zeka

Gemini 3.8 Flash GitHub Copilot’ta Kullanıma Sunuldu

03/09/2026 Aşkın KILIÇ
Microsoft SQL’de Hibrit Arama: Metin ve Vektörün Gücü
Bulut Altyapı Geliştirici Araçları Veri & Analitik

Microsoft SQL’de Hibrit Arama: Metin ve Vektörün Gücü

03/09/2026 Aşkın KILIÇ
GitHub Copilot AI Kodlamada Maliyeti Nasıl Düşürüyor
Bulut Altyapı Geliştirici Araçları Yapay Zeka

GitHub Copilot AI Kodlamada Maliyeti Nasıl Düşürüyor

03/09/2026 Aşkın KILIÇ
Ajanik Yapay Zekâ Terimleri: Loop, Harness ve Squad
Kurumsal Teknoloji Yapay Zeka

Ajanik Yapay Zekâ Terimleri: Loop, Harness ve Squad

03/09/2026 Aşkın KILIÇ
Visual Studio'da Çözüm Bazlı Renk Teması Nasıl Ayarlanır
Geliştirici Araçları Microsoft Azure

Visual Studio’da Çözüm Bazlı Renk Teması Nasıl Ayarlanır

02/09/2026 Aşkın KILIÇ
SPFx Dev Skills: Ajanların Bildiği ve Kaçırdığı Detaylar
DevOps Geliştirici Araçları Yapay Zeka

SPFx Dev Skills: Ajanların Bildiği ve Kaçırdığı Detaylar

02/09/2026 Aşkın KILIÇ
Microsoft Entra ID için Bicep Şablonları Genel Kullanıma
DevOps Güvenlik & Kimlik Microsoft Azure

Microsoft Entra ID için Bicep Şablonları Genel Kullanıma

02/09/2026 Aşkın KILIÇ
Kubernetes v1.37: etcd RangeStream ile Bellek Dostu Liste
Bulut Altyapı Konteyner & Kubernetes

Kubernetes v1.37: etcd RangeStream ile Bellek Dostu Liste

02/09/2026 Aşkın KILIÇ
Visual Studio'da GitHub Pull Request İnceleme Rehberi
DevOps Geliştirici Araçları Yapay Zeka

Visual Studio’da GitHub Pull Request İnceleme Rehberi

01/09/2026 Aşkın KILIÇ
Python in Visual Studio Code – November 2025 Release
Bulut Altyapı Geliştirici Araçları

Python in Visual Studio Code – November 2025 Release

01/09/2026 Aşkın KILIÇ
Azure SRE Agent'ı Connector Namespace ile Güçlendirmek
Bulut Altyapı Microsoft Azure Yapay Zeka

Azure SRE Agent’ı Connector Namespace ile Güçlendirmek

01/09/2026 Aşkın KILIÇ
Enterprise Live Migrations is now in public preview
Bulut Altyapı DevOps

Enterprise Live Migrations is now in public preview

01/09/2026 Aşkın KILIÇ

Hakkımda

Aşkın KILIÇ

Microsoft Azure Çözüm Uzmanı. Bulut bilişim, yapay zekâ, DevOps ve kurumsal güvenlik üzerine yazılar yazıyorum.

Devamını Oku →

Kategoriler

  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka

Popüler Etiketler

AI ajanları ASP.NET Core Azure azure app service Azure Cosmos DB Azure Developer CLI Azure DevOps azure sdk Azure SQL bulut bilişim C++ CI/CD CodeQL code review copilot Copilot CLI DevOps geliştirici verimliliği GitHub GitHub Actions GitHub Copilot güvenlik Kimlik Doğrulama Kubernetes Kurumsal geliştirme kurumsal güvenlik kurumsal yapay zeka maliyet optimizasyonu MCP Microsoft Agent Framework Microsoft Azure Microsoft Foundry otomasyon performans Pull Request RAG SEO uyumlu verimlilik veri yönetimi Visual Studio Visual Studio 2026 VS Code yapay zeka yapay zeka ajanları Yazılım geliştirme
  • Gizlilik Politikası
  • Çerez Politikası
  • Kullanım Koşulları
  • Hakkımda
  • İletişim

© 2026 Aşkın KILIÇ | Tüm hakları saklıdır. | Powered By SpiceThemes

Çerez tercihleri Zorunlu çerezler sitenin çalışması için kullanılır. Analitik çerezler yalnız açık izninizden sonra Google Analytics ve Microsoft Clarity için etkinleştirilir. KVKK ve Çerez Politikası
✉

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Ana Sayfa
Kategoriler
💻 Geliştirici Araçları 432 yazı 🏗️ Bulut Altyapı 345 yazı 🤖 Yapay Zeka 289 yazı 🔧 DevOps 242 yazı ☁️ Microsoft Azure 231 yazı 🔒 Güvenlik & Kimlik 199 yazı 🏢 Kurumsal Teknoloji 83 yazı 📊 Veri & Analitik 62 yazı 🐳 Konteyner & Kubernetes 53 yazı 📧 Microsoft 365 22 yazı 📁 Azure 1 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← GitHub Secret Scanning ve Publ...
    Office Add-ins için Birleşik M... →
    📩

    Gitmeden önce!

    Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

    🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

    📬 Haftalık bülten: Teknoloji + AI haberleri
    Beni Takip Et Yeni Azure / AI / DevOps yazılarını GitHub ve RSS üzerinden takip edin.
    GitHub RSS