دستور SET NOCOUNT ON در SQL Server
بررسی اجمالی SET NOCOUNT ON
ترفندهای زیادی وجود دارد که می توانید هنگام نوشتن کد T-SQL برای کاهش بار دیتای ارسالی و دریافتی بر روی Server پایگاه داده از آنها استفاده کنید. یکی از این موارد کاهش داده های شبکه برای هر جمله T-SQL یا همان کوئری در حال اجرا است که بصوت Storedprocedure ذخیره شده است. هر بار که یک دستور SQL اجرا می شود ، تعداد ردیف هایی را که تحت تأثیر قرار گرفتند به صورت یه پیام متنی برمی گرداند.
با استفاده از تنظیم SET NOCOUNT ON در پروسیجر خود می توانید نمایش این پیام ها را غیر فعال کرده و بخشی از ترافیک Server را کاهش دهید. البته نمایش این پیامها نیز گاهی باعث دردسر برای کاربران نهایی نرم افزارهایی که به SQL Server متصل هستند نیز می شود. به این صورت که ممکن است با پیغامهای خطای عدم اجرای دستوارت SQL مواجه شویم.
توضیح
همانطور که در بالا ذکر شد ، هیچ لزومی برای بازگشت پیام در مورد آنچه در SQL Server اتفاق می افتد هنگام اجرای یک Stored procedure وجود ندارد. اگر کوئری یا پرس و جو را از پنجره پرس و جو اجرا می نمایید ، این گزینه ممکن است مفید باشد ، اما اکثر کاربران نهایی که از طریق یک برنامه دستورات را اجرا می کنند ، هرگز این پیام ها را نمی بینند و لزومی نیز به دیدن آنها برای کاربران نهایی وجود ندارد.
البته شما هنوز هم می توانید از
@@ROWCOUNT
استفاده کنید تا تعداد ردیف هایی که تحت تأثیر یک جمله SQL قرار گرفته اند را بدست آورید ، بنابراین استفاده از SET NOCOUNT ON این رفتار را تغییر نخواهد داد.
مثال :
-- using SET NOCOUNT ON
CREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30)
AS
SET NOCOUNT ON
SELECT *
FROM Person.Address
WHERE City = @City
GO