برای مشاهده یافته ها از کلید Enter و برای خروج از کلید Esc استفاده کنید.

کوئری های کاربردی در 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 از جدیدترین مقالات و فیلم های آموزشی با خبر شوید.

اشتراک گذاری با دیگران
  •  
  •  
  •  
  •  
  •