بسم الله الرحمن الرحیم
در این آموزش قصد دارم شما را با یکی دیگر از ویژگی های SQL Server آشنا کنم. متاسفانه بسیاری از افراد فکر می کنند SQL Server فقط یک ابزار برای نگهداری اطلاعات است! و از بسیاری از سرویس های SQL Server بی خبر هستند.
آموزش مانیتورینگ SQL Server و ثبت تغییرات ایجاد شده
SqlDependency
کلاس SqlDependency و Query notifications ابزارهایی هستند که به شما اجازه می دهند SQL Server را مانیتور کنید این ابزار ها در SQL Server 2005 ارائه شدند.
Query Notifications
Query Notifications به برنامه شما اجازه می دهد در صورتی که داده ای در دیتابیس تغییر داده شد، از این تغییر اطلاع پیدا کند.
هدف این کلاس ذخیره کردن اطلاعاتی جدیدی است که مداوم در دیتابیس ایجاد می شود.
اگر شما بخواهید این کار را بدون استفاده از این سرویس انجام دهید باید یک تایمر داشته باشید که در بازه های زمانی معین اطلاعات را بررسی و در صورتی که تغییری ایجاد شد این اطلاعات را برای شما ارسال کند که تعیین این تغییر خود امری دشوار خواهد بود، اگر بخواهیم ساده بگوییم شما کاری را که SQL Server قبلا انجام داده و آن را بهینه کرده است می خواهید انجام دهید!
قبلا در مباحث دیگرSQL Server Broker را توضیح داده ام، در اینجا نیز برای استفاده از این سرویس باید از Service Broker و QUEUE استفاده کنید.
بسم الله الرحمن الرحیم
بدست آوردن کانکشن های فعال در SQL Server
یکی از دوستان در خصوص نحوه بدست آوردن Connection هایی که به هر دیتابیس متصل است، سوالی مطرح کردند.
در SQL Server شما به سادگی می توایند اطلاعات تمامی کاربرانی که به Database ها متصل هستند را بدست آورید. برای بدست آوردن این اطلاعات کافی است که Query زیر را اجرا کنید.
SELECT DB_NAME(dbid) AS DBName,
COUNT(dbid) AS NumberOfConnections,
loginame
FROM sys.sysprocesses
GROUP BY dbid, loginame
ORDER BY DB_NAME(dbid)
تصویر زیر خروجی دستور ما را نمایش می دهد
بسم الله الرحمن الرحیم
همانطور که می دانید ما در SQL Server نوع داده ای با نام DateTime داریم. این نوع داده ای برای ذخیره اطلاعات تاریخ و ساعت در SQL Server استفاده می شود. در اینجا قصد داریم برخی از توابع مفید برای کار بر روی DateTime را بررسی کنیم.
بدست آوردن تاریخ جاری در SQL Server
برای بدست آوردن تاریخ و ساعت جاری سیستم می توانید از تابع زیر استفاده کنید
select getdate()
DATEPART
بدست آوردن بخشی از یک تاریخ در SQL Server
اگر بخواهید بخشی از یک تاریخ و زمان را انتخاب کنید، (مثلا فقط روز یا فقط ساعت و....) می بایست از تابع DATEPART استفاده کنید این تابع دو پارامتر دریافت می کند.
پارامتر اول مشخص کننده بخشی از تاریخ و زمان که می بایست انتخاب شود و پارامتر دوم تاریخی است که شما می خواهید بر روی آن کار کنید.
DATEPART ( datepartEnum , yourDate )
به جای datepartEnum می توانید از مقادیر زیر استفاده کنید
datepart |
آموزش برنامه نویسی
بسم الله الرحمن الرحیم
فراخوانی Stored Procedure
برای انجام هر کار طبیعتا روش های متفاوتی وجود دارد. در این مقاله قصد داریم نحوه یافتن یک Stored Procedure را در روش ها مختلف بررسی کنیم.
برای مثال در ابتدا یک Procedure به صورت زیر تعریف می کنیم.
CREATE PROCEDURE TESTING
(@OPTION INT)
AS
IF @OPTION=0
SELECT 1 AS NUMBER
ELSE
SELECT 100 AS NUMBER
GO
برای یافتن و مشاهده این Procedure می توانیم از روش های زیر کمک بگیریم.
بسم الله الرحمن الرحیم
آموزش ساخت Full Text Catalog و Full Text Search در SQL Server
در این آموزش مفاهیم زیر را بررسی خواهیم کرد
-
ساخت Full-Text Search
-
ساخت Full-Text Catalog
-
ساخت Full-Text Index
-
-
نوشتن Query با استفاده از Full-Text Search
-
استفاده از Full-Text Search در پروژه های ASP.NET MVC به کمک LINQ
تصور کنید وب سایتی دارید و میخواهید بر روی حجم زیادی از اطلاعات جستجو انجام دهید. وب سایت شما یک وب سایت آموزشی مانند ABLY.ir است و در آن متن های زیادی وجود دارد. شما میخواهید یک فرم جستجو برای جستجو در تمامی قسمت های وب سایت ایجاد کنید.
چطور می توانید این جستجو را با این ویژگی ها پیاده سازی کنید؟
1- جستجو در کلمات کلیدی
2- جستجو در میان نویسندگان
3- جستجو در مطالب
4- جستجو در عنوان فایل ها
و..
اولین راه حلی که انتخاب می شود JOIN کردن تمام جداول و نوشتن یک دستور SELECT با انجام WHERE بر روی همه ی ستون ها است!. این راه حل بدترین راه حل ممکن است زیرا در صورتی که حجم اطلاعات شما افزایش یابد عملا سیستم جستجو شما دیگر پاسخگو نخواهد بود زیرا طبیعتا برای جستجو در متن ها باید از دستور LIKE استفاده کنید که این دستور خود به دلیل مقایسه تمامی عبارت های ذخیره شده به صورت بخش به بخش با متن درخواستی کاربر بسیار سرعت کمی دارد، همچنین هزینه JOIN بسیار سنگین خواهد بود و باعث می شود عملا این ویژگی غیر قابل استفاده شود.
SQL Server با ارائه دادن ابزاری به نام Full Text Search به شما این امکان را می دهد که به سادگی و با بهترین کارایی جستجحو های خود را بر روی متن ها انجام دهید.
Full Text Search
Full Text Search ابزاری است که به شما برای ایجاد انواع کوئری های پیچده بر روی داده های از نوع کاراکتر (Character) کمک می کند. این کوئری ها می توانند بر روی کلمات، جمله ها و عبارت ها مورد استفاده قرار گیرند. ما می توانیم یک full-text index را بر روی یک Table و یا یک indexed view ایجاد کنیم. full-text Search تنها می تواند بر روی یک Table و یا یک indexed view مورد استفاده قرار گیرد. Index می تواند تا 1024 ستون (Column) را در بر گیرد.
Full Text Index
Full Text Index از Token هایی تشکیل می شود که این Token ها در واقع همان کلمات درون یک فیلد شما هستند و این امر باعث می شود که بتوان بر روی متون index گذاری کرد و سرعت جستجو را افزایش داد.
مثال: من اسماعیل شیدایی هستم.
اگر مقدار یکی از رکوردهای ما به صورت بالا باشد پس از انجام عملیات full-text index این متن به صورت زیر ذخیره خواهد شد.
"من"
"اسماعیل"
"شیدایی"
"هستم"
این کار باعث می شود تا شما در سریعترین حالت ممکن بتوانید به اطلاعات مورد نظر خود برسید زیرا SQL Server اطلاعات شما را Index گذاری می کند در نتیجه به سرعت می تواند محل قرار گیری (شماره رکورد) هر کلمه را در جدول بازیابی کند.
طبیعتا راه حل پیش فرض برای جستجو در متن ها استفاده از دستور LIKE می باشد. دستور Like بر روی کاراکترها جستج خود را انجام می دهد و مقدار درخواستی شما را با تمام متن ها مقایسه می کند اما در Full Text Search مقدار درخواستی شما با کلمات مقایسه می شود به همین دلیل تفاوت سرعت اجرای این دو دستور در کوئری های پیچیده بسیار مشخص خواهد بود.
برای ساخت Index می بایست ما مراحل زیر را انجام دهیم.
1. Create a Full-Text Catalog
2. Create a Full-Text Index
3. Populate the Index
Create a Full-Text Catalog
ابتدا دیتابیس خود را انتخاب کرده، سپس از بخش Storage بر روی Full Text Catalog راست کلیک کرده و گزینه New Full-Text-Catalog را انتخاب می کنیم.
در پنجره باز شده نامی را برای Full Text Catalog خود انتخاب می کنیم و سپس Ok را انتخاب کنید. Full Text Catalog ما با موفقیت ایجاد شد.
بسم الله الرحمن الرحیم
برطرف کردن خطای Cannot open user default database
هر User در SQL Server یک Database Default دارد، شما می توانید Database پیش فرض یک User را از طریق بخش Security زیر منو Logins برای User خود مشخص کنید. در تصویر زیر ما بر روی کاربر Sa دابل کلیک کرده ایم.
همانطور که در تصویر بالا مشاهده می کنید، در اینجا پایگاه داده پیش فرض کاربر ما Master می باشد.
اگر شما به هر دلیلی پایگاه داده پیش فرض یک User را حذف کنید، خطای زیر اتفاق خواهد افتاد.
حال اگر شما تنها یک کاربر برای SQL Server خود داشته باشید و پایگاه داده پیش فرض این کاربر را حذف کنید، طبیعتا دیگر نمی توانید به Instance مربوطه Login کنید.
در این شرایط راه حل اول نصب یک Instance جدید بر
بسم الله الرحمن الرحیم
حذف کردن تمامی پروسیجر ها
برای دوستان عزیز که در تیم طراحی پایگاه داده SQL فعالیت می کنند مطلبی را آماده کردم که انشالله مفید واقع شود.
برای حذف تمامی پروسیجر های موجود در یک پایگاه داده کافی است که کد زیر را اجرا کنید تا تمامی پروسیجر های شما
حذف شوند.می توان این دستور را به صورت یک پروسیجر ذخیره کنید تا در مواقع نیاز از آن استفاده کنید و در نهایت کد ما
بسم الله الرحمن الرحیم
ترفند Set Nocount در SQL Server
مطمئنا هنگام کار با SQL Server دیده اید که پس از اجرای دستوارت، پیغامی به نمایش درمی آید که تعداد خطوط تاثیر گرفته از دستورات موجود را به شما نشان می دهد که بسته به نوع دستور و نوع حلقه (Loop) می تواند کم یا زیاد باشد. در ادامه به یکی از قابلیت های SQL Server می پردازیم.
آموزش برنامه نویسی
بسم الله الرحمن الرحیم
SQL Server - Auto Close
در این مطلب راهکار دیگری را برای بهبود کیفیت کار SQL سرور ارائه خواهیم کرد. دلایل متعددی برای کاهش سرعت SQL سرور وجود دارد اما یکی از ساده ترین اما در عین حال کارآمد ترین راه حل های آن ها امکان Auto Close است.
آموزش برنامه نویسی
مدیر وب سایت
سلام دوست عزیز. شما یاید از سرویس ها استفاده کنید ...
کاربر ABLY
سلام وقتتون بخیر من یه پروژه پیاده سازی کردم که ...
کاربر ABLY
چطور میتونیم در Asp.Net mvc از Simple.Identity برای ثبت نام ...
کاربر ABLY
مطلب مفیدی بود ممنون ...
مدیر وب سایت
با سلام. ممنون از توجه و دقت شما دوست عزیز. ...