کوئری های کاربردی در SQL Server – قسمت دوم
در این آموزش و سلسله آموزش هایی که با این عنوان منتشر خواهد شد سعی می شود کاربردی ترین کوئری های SQL Server که ممکن است برنامه نویسان یا متخصصان پایگاه داده بارها مورد استفاده قرار دهند آموزش داده شود. در این آموزش موارد زیر را یاد خواهیم گرفت:
- مشخص کردن تعداد رکوردهای متاثر از آخرین دستور اجرا شده
- گرفتن Identity بعد از درج رکورد
- گرفتن سال به شکل yyyy-mm-dd
- مشخص کردن پنجشنبه و جمعه در شرط کوئری
- مشخص کردن آخرین زمان ریست شدن سرویس SQL Server
- مشاهده متن یک پراسیجر یا ویوو
- مشاهده اطلاعات مربوط به یک جدول، ویوو، پروسیجر و …
- مشاهده مشخصات سرویس های SQL
- جستجو در دستورات جاب ها
- مشاهده سنگین ترین کوئری های در حال اجرا بر اساس CPU Time
مشخص کردن تعداد رکوردهای متاثر از آخرین دستور اجرا شده
SELECT @@ROWCOUNT
یک دستور کاربردی که می توان بعد از دستورات delete ، insert ، update و … استفاده کرد.
مثال:
USE AdventureWorks2017 GO UPDATE HumanResources.Employee SET JobTitle = N'Executive' WHERE NationalIDNumber = 123456789 IF @@ROWCOUNT = 0 PRINT 'Warning: No rows were updated'
گرفتن Identity بعد از درج رکورد
SELECT SCOPE_IDENTITY()
مثال:
INSERT Person.AddressType ( Name, rowguid, ModifiedDate ) VALUES ( 'test12', NEWID(), GETDATE() ) SELECT SCOPE_IDENTITY()
گرفتن سال به شکل yyyy-mm-dd
SELECT CONVERT(CHAR(10),GETDATE(),126)
مشخص کردن پنجشنبه و جمعه در شرط کوئری
IF DATEPART(WEEKDAY,GETDATE()) NOT IN (5,6) PRINT 'No Holiday' ELSE PRINT 'Holiday'
مشخص کردن آخرین زمان ریست شدن سرویس SQL Server
SELECT sqlserver_start_time FROM sys.dm_os_sys_info
مشاهده متن یک پراسیجر یا ویوو
EXEC sp_helptext '[dbo].[uspGetManagerEmployees]'
بهتر است قبل از اجرا دکمه Result to text در بالای صفحه Management Studio را فعال کنید تا خروجی کوئری را به شکل Text مشاهده نمایید
مشاهده اطلاعات مربوط به یک جدول، ویوو، پروسیجر و …
USE AdventureWorks2017 GO EXEC sp_help '[Sales].[SalesOrderHeader]'
اگر نام جدول به عنوان ورودی داده شود اطلاعات مفیدی همچون زمان ایجاد جدول، نام فیلدها و نوع داده ایی هر کدام از آن ها ، کلیدهای خارجی ، ایندکس ها و … را نمایش می دهد.
مشاهده مشخصات سرویس های SQL
SELECT * FROM sys.dm_server_services
این dmv اطلاعات مفیدی از جمله نام اکانت اجرا کننده سرویس ها، وضعیت سرویس ها، مسیر فایل ها و … را نمایش می دهد
جستجو در دستورات جاب ها
SELECT j.name , js.command , j.enabled FROM msdb.dbo.sysjobsteps js INNER JOIN msdb.dbo.sysjobs j ON j.job_id = js.job_id WHERE js.command LIKE '%truncate%'
مشاهده سنگین ترین کوئری های در حال اجرا بر اساس CPU Time
SELECT r.session_id, DB_NAME(r.database_id) DatabaseName, t.text, r.start_time, r.status ,r.wait_type, r.wait_time, r.cpu_time, r.reads, r.writes, r.logical_reads, r.total_elapsed_time FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t WHERE r.session_id <> @@SPID ORDER BY cpu_time DESC
برای مشاهده جزئیات بیشتر می توانید به لینک یافتن پر هزینه ترین کوئری های در حال اجرا مراجعه نمایید.
امیدوارم این آموزش برای خوانندگان گرامی مفید واقع شود. لطفا با ارائه نظرات ، سوالات و پیشنهادات خود به بالا بردن کیفیت مطالب آموزشی و همچنین ایجاد دلگرمی برای ادامه مسیر آموزش به ما کمک نمایید. همچنین می توانید با عضویت در کانال تلگرام IranSQL از جدیدترین مقالات و فیلم های آموزشی با خبر شوید.
دیدگاه ها
7 دیدگاه
ممنون از اين زحمات و مقاله مفيد شما
خواهش میکنم ?
سلام خیلی ممنون بابت این اطلاعات و امیدوارم باز هم از این کوئری ها بیشتر بگذارید
خواهش میکنم. حتما.
برای power bi هم امکانش هست امورز بذارین؟
ممنون از سایت خوبتون
اگه بخوام ببینم در sql مثلا فلان یوزر ، با چه ip کامپیوتری همین الان وارد شده و کوئری میزنه یا اینکه دو روز پیش، فلان یوزر ، با چه ip وارد شده در sql میشه در قالب اموزش این رو بذارین ؟ ممنونم.
و همچنین
یه یوزری اخرین باری که در sql وارد شده
سلام. با کوئری زیر می تونید HostName و IP تمام کانکشن هایی که در حال حاضر بر روی SQL Server هست مشاهده کنید. برای مشاهده اطلاعات قدیمی هم باید آدیتینگ راه اندازی کنید.
SELECT s.host_name, c.client_net_address , s.login_name , s.login_time
FROM sys.dm_exec_connections c
INNER JOIN sys.dm_exec_sessions s ON s.session_id = c.session_id
ارسال دیدگاه