کوئری های کاربردی در SQL Server – قسمت اول
در این آموزش و سلسله آموزش هایی که با این عنوان منتشر خواهد شد سعی می شود کاربردی ترین کوئری های SQL Server که ممکن است برنامه نویسان یا متخصصان پایگاه داده بارها مورد استفاده قرار دهند آموزش داده شود. در این آموزش موارد زیر را یاد خواهیم گرفت:
- مشاهده نام سرور و نسخه نصب شده SQL Server
- مشاهده فضای خالی درایوهای سرور
- مشاهده حجم دیتابیس و میزان فضای استفاده نشده
- جدا کردن بخش هایی از یک متن با یک کارکتر خاص
- جستجوی یک کلمه در Procedureها ، Viewها و Triggerها
- غیرفعال کردن Identity جدول و درج توسط کاربر
- مشاهده مشخصات فایل های دیتابیس
- مشاهده کوئری هایی که بیش از یک ثانیه بلاک شده اند
- مشاهده آخرین کوئری اجرا شده مربوط به یک SessionId
- مشاهده مشخصات آخرین فول بکاپ یک دیتابیس
(حجم ، زمان شروع ، مدت اجرا و مسیر بکاپ گیری)
مشاهده نام سرور و نسخه نصب شده SQL Server
SELECT @@SERVERNAME ServerName, @@VERSION SqlVersion
مشاهده فضای خالی درایوهای سرور
EXEC xp_fixeddrives
مشاهده حجم دیتابیس و میزان فضای استفاده نشده
USE AdventureWorks2017 GO EXEC sp_spaceused
جهت بررسی جزئیات بیشتر حجم دیتابیس و فایل های آن می توانید به مقاله بدست آوردن حجم دیتابیس ها، فایل ها و جداول رجوع نمایید.
جدا کردن بخش هایی از یک متن با یک کارکتر خاص
SELECT value FROM STRING_SPLIT('ali,amin,ata',',')
متن ما در اینجا “ali,amin,ata” است و کاراکتر جداکننده “,” می باشد. دستور String_Split از SQL Server 2016 به بعد قابل استفاده می باشد.
جستجوی یک کلمه در Procedureها ، Viewها و Triggerها
USE AdventureWorks2017 GO SELECT o.type_desc , OBJECT_NAME(id) ObjectName , c.text FROM sys.syscomments c INNER JOIN sys.objects o ON c.id = o.object_id WHERE text LIKE '%SalesOrderHeader%'
غیرفعال کردن Identity جدول و درج توسط کاربر
USE AdventureWorks2017 GO SET IDENTITY_INSERT Person.AddressType ON INSERT INTO Person.AddressType ( AddressTypeID, Name, rowguid, ModifiedDate) VALUES( 10,'test', NEWID() ,GETDATE() ) SET IDENTITY_INSERT Person.AddressType OFF
دقت شود دستور IDENTITY_INSERT به ازای همان Session اجرا کننده فعال می شود و درآن واحد نمی توان در یک Session این دستور را برای بیش از یک جدول فعال نمود و حتما می بایست IDENTITY_INSERT جدول قبلی را مطابق نمونه بالا غیر فعال نمود تا بتوان برای جدولی دیگر این دستور را فعال کرد.
مشاهده مسیر و حجم فایل های یک دیتابیس
USE AdventureWorks2017 GO EXEC sp_helpfile
مشاهده کوئری هایی که بیش از یک ثانیه بلاک شده اند
SELECT r.session_id Blocked_SessionId , r.total_elapsed_time / 1024 Blocked_Duration_Second , t.text BlockedQuery, r.blocking_session_id , tt.text FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t INNER JOIN sys.sysprocesses p ON r.blocking_session_id = p.spid CROSS APPLY sys.dm_exec_sql_text(p.sql_handle) tt WHERE r.blocking_session_id > 0 AND total_elapsed_time > 1000
مشاهده آخرین کوئری اجرا شده مربوط به یک SessionId
DBCC INPUTBUFFER(57)
در اینجا SessionId ، ۵۷ می باشد.
مشاهده مشخصات آخرین فول بکاپ یک دیتابیس
SELECT bs.database_name AS DbName , CAST ( bs.compressed_backup_size / 1024.0 / 1024 AS DECIMAL(10, 2) ) AS compressed_BackupSize_MB , CAST ( bs.backup_size / 1024.0 / 1024 AS DECIMAL(10, 2) ) AS BackupSize_MB , DATEDIFF(SECOND,bs.backup_start_date , bs.backup_finish_date) Duration_Second , bs.backup_start_date AS Backup_StartDate , bs.backup_finish_date AS Backup_EndDate , bs.name AS BackupName , bmf.physical_device_name AS DeviceName FROM msdb.dbo.backupset bs INNER JOIN msdb.dbo.backupmediafamily bmf ON bs.media_set_id = bmf.media_set_id WHERE bs.database_name = 'AdventureWorks2017' and bs.type = 'D' order by bs.backup_start_date DESC
حجم ، زمان شروع ، مدت اجرا و مسیر بکاپ گیری از جمله اطلاعات مفیدی است که می توان با استفاده از کوئری بالا به آن دست یافت. همچنین می توان با تغییر Type به مقادیر L یا I به ترتیب مشخصات Log و Diff بکاپ را مشاهده کرد.
امیدوارم این آموزش برای خوانندگان گرامی مفید واقع شود. لطفا با ارائه نظرات ، سوالات و پیشنهادات خود به بالا بردن کیفیت مطالب آموزشی و همچنین ایجاد دلگرمی برای ادامه مسیر آموزش به ما کمک نمایید. همچنین می توانید با عضویت در کانال تلگرام IranSQL از جدیدترین مقالات و فیلم های آموزشی با خبر شوید.
دیدگاه ها
ارسال دیدگاه