ably ably برای هدایت شدن به سایت جدید اینجا کلیک کنید

آموزش برنامه نویسی

آموزش برنامه نویسی وب، اندروید، ویندوز , اسکیوال و...
Tell: 0912 097 5516
| Email: Hello@EduOnline.ir

۴۱ مطلب با موضوع «DataBase Teams» ثبت شده است

حذف تمام پروسیجر ها

بسم الله الرحمن الرحیم

حذف کردن تمامی پروسیجر ها

برای دوستان عزیز که در تیم طراحی پایگاه داده SQL فعالیت می کنند مطلبی را آماده کردم که انشالله مفید واقع شود.

 برای حذف تمامی پروسیجر های موجود در یک پایگاه داده کافی است که کد زیر را اجرا کنید تا تمامی پروسیجر های شما

حذف شوند.می توان این دستور را به صورت یک پروسیجر ذخیره کنید تا در مواقع نیاز از آن استفاده کنید و در نهایت کد ما

به این صورت می شود.

 

ادامه مطلب...

خطای Cannot open user default database

بسم الله الرحمن الرحیم

برطرف کردن خطای Cannot open user default database

هر User در SQL Server یک Database Default دارد، شما می توانید Database پیش فرض یک User را از طریق بخش Security زیر منو Logins برای User خود مشخص کنید. در تصویر زیر ما بر روی کاربر Sa دابل کلیک کرده ایم.




همانطور که در تصویر بالا مشاهده می کنید، در اینجا پایگاه داده پیش فرض کاربر ما Master می باشد.
اگر شما به هر دلیلی پایگاه داده پیش فرض یک User را حذف کنید، خطای زیر اتفاق خواهد افتاد.

خطای Cannot open user default database

حال اگر شما تنها یک کاربر برای SQL Server خود داشته باشید و پایگاه داده پیش فرض این کاربر را حذف کنید، طبیعتا دیگر نمی توانید به Instance مربوطه Login کنید.
در این شرایط راه حل اول نصب یک Instance جدید برای SQL Server  است، در این شرایط طبیعتا دیگر به سایر دیتابیس های Instance قبلی دسترسی نخواهید داشت!

راه حل دوم تغییر پایگاه داده پبش فرض یک User توسط SQL Command می باشد.

ادامه مطلب...

انتقال اطلاعات Database در MVC

بسم الله الرحمن الرحیم

بسیاری از مواقع شما نیاز دارید اطلاعات درون پایگاه داد خود را به پایگاه داده دیگری انتقال دهید.

در مطلب تبدیل اطلاعات یک SQL Server به نسخه SQL Server پایین تر  نحوه انتقال اطلاعات را از یک نسخه جدید SQL Server به نسخه های قدیمی تر توضیح دادیم. در مطلب بالا توضیح دادیم چطور می توانید فقط اطلاعات و داده های درون پایگاه داده را بدون ساختار پایگاه داده (مانند کدهای تولید View,Table و...) انتخاب کنید.

آموزش انتقال اطلاعات Database در MVC

ادامه مطلب...

آموزش Full-Text Search

بسم الله الرحمن الرحیم

آموزش ساخت 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 Search

در پنجره باز شده نامی را برای Full Text Catalog خود انتخاب می کنیم و سپس Ok را انتخاب کنید. Full Text Catalog ما با موفقیت ایجاد شد.

ادامه مطلب...

تبدیل اطلاعات یک SQL Server به نسخه SQL Server پایین تر

بسم الله الرحمن الرحیم

آموزش Generate Scriptx در SQL Server

بسیاری از مواقع شما نیاز دارید اطلاعات درون پایگاه داده خود را از یک SQL Server به نسخه دیگری منتقل کنید، متاسفانه شما نمی توانید اطلاعات درون یک پایگاه داده را به نسخه دیگری که از SQL Server قدیمی تر استفاده می کند منتقل کنید.

به طور مثال، اگر بخواهید اطلاعات درون پایگاه داده خود را که زا SQL Server 2012 استفاده می کند به SQL Server 2008 منتقل کنید، چطور این کار را انجام می دهید؟

یکی از این روش ها استفاده از Generate Script می باشد.

برای این کار کافی است مراحل زیرا طی نمایید:

ابتدا SQL Server خود را باز نمایید، سپس بر روی پایگاه داده ای که قصد دارید به SQL Server دیگری منتقل شود راست کلیک کنید سپس از گزینه Tasks زیر منوی Generate Scripts را انتخاب کنید.

Generate Script

ادامه مطلب...

آموزش تبدیل یک دیتابیس به Model - Code first

بسم الله الرحمن الرحیم

آموزش Entity Framework Power Tools

تبدیل پایگاه داده به Model در Entity Framework

هنوز افراد زیادی وجود دارند که تمایل دارند پایگاه داده خود را با استفاده از SQL Server ایجاد کنند و سپس از روی پایگاه داده Model های خود را طراحی کنند (Code first) . راه های زیادی برای تبدیل یک پایگاه داده به کلاس های Model وجود دارد در همین وب سایت برخی از این روش ها را بررسی کرده ایم اما امروز می خواهیم یک ابزار بسیار کارامد و سریع را برای اینکار به شما معرفی کنیم.


من یک پایگاه داده را در SQL Server ایجاد کرده ام و سپس یک پروژه پیش  فرض MVC را ایجاد کرده ام. حال نوبت به طراحی و بازنویسی Model ها می رسد.

آموزش entity framework

ادامه مطلب...

بهینه سازی SQL

بسم الله الرحمن الرحیم

بهینه سازی  SQL

AutoGrowth

سایر مطالب در خصوص بهینه سازی SQL را می توانید از این بخش مطالعه بفرمایید.

بهینه سازی SQL Server


طبیعتا همه دوستان با تصویر بالا آشنا هستند. این پنجره وقتی باز می شود که شما می خواهید یک پایگاه داده جدید را طراحی کنید. متاسفانه اکثر افراد تنها در این پنجره نام پایگاه داده خود را مشخص می کنند و سپس کلید Ok را انتخاب می کنند.
یکی از بخش های این پنجره که در تصویر بالا مشخص شده است مربوط به نحوه Growth و یا همان رشد پایگاه داده شما است.
به صورت پیش فرض پایگاه داده شما می تواند 3 MB از فضای درایو مشخص شده را برای فایل MDF خود و همچنین 1 MB را به فایل LDF خود اختصاص دهد. در صورتی که حجم هر یک از فایل های MDF و LDF شما از مقدار مشخص شده بیشتر شود. پایگاه داده شما بر اساس تنظیمات مشخص شده در بخش Autogrowth / Maxsize رشد خواهد کرد.
همانطور که در تصویر مشخص است فایل MDF شما می تواند در صورت بزرگتر شدن از 3 MB به صورت نامحدود در هر مرحله 1 MB رشد کند.
فایل LDF نیز در صورت بزرگتر شدن از 1 مگابابیت 10 درصد رشد خواهد کرد. در صورتی که فایل LDF 100 مگابایت باشد با تنظیم رشد 10 درصدی، فایل مربوطه به 110 مگابایت افزایش خواهد یافت.

ادامه مطلب...

Stored Procedure

بسم الله الرحمن الرحیم

فراخوانی 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 می توانیم از روش های زیر کمک بگیریم.

ادامه مطلب...

SQL Injection

بسم الله الرحمن الرحیم

SQL Injection


در این آموزش قصد داریم در خصوص امنیت در SQL Server به صورت مختصر صحبت کنیم.
معمولا بیشتر مشتریان نگران امنیت اطلاعاتشان هستند و از تدابیری برای جلوگیری از SQL Injection صحبت می کنند. بیشتر اتفاقاتی که در خصوص SQL Injection رخ می دهد به دلیل مشکلاتی است که در SQL Server توسط طراحان پایگاه داده و برنامه نویسان انجام می شود، زیرا بیشتر طراحان اطلاعات کافی در خصوص SQL Injection ندارند و تنها نام آن را شنیده اند.
منظور از طراحان، کسانی هستند که پایگاه داده را طراحی و مدیریت می کنند که به اصطلاح به آنها DBA و یا Database Administrator گفته می شود.
SQL Injection نتیجه یک کد نویسی اشتباه است. یکی از شایع ترین دلایل وقوع SQL Injection استفاده از dynamic SQL است، بدین معنا که شما Query خود را به صورت داینامیک با استفاده از پارارمترهای ارسال شده کاربر اجرا کنید.
در این جا یک مثال ساده را بیان کرده ایم که کاربر می تواند با استفاده از ارسال پارامترهای First Name وLast Name یک Query ساده را اجرا کند.

کد خود را در یک Procedure به صورت زیر تعریف می کنیم.

USE AdventureWorks2014
GO
CREATE PROCEDURE search_first_or_last
@firstName NVARCHAR(50)
,@lastName NVARCHAR(50)
AS
BEGIN
DECLARE @sql NVARCHAR(4000)
SELECT @sql = ' SELECT  FirstName ,MiddleName, LastName' +
' FROM Person.Person WHERE 1 = 1 '
IF @firstName IS NOT NULL
SELECT @sql = @sql + ' AND FirstName LIKE ''' + @firstName + ''''
IF @lastName IS NOT NULL
SELECT @sql = @sql + ' AND LastName LIKE ''' + @lastName + ''''
EXEC (@sql)
END

ادامه مطلب...

تاریخ در SQL

بسم الله الرحمن الرحیم

همانطور که می دانید ما در SQL Server نوع داده ای با نام DateTime داریم. این نوع داده ای برای ذخیره اطلاعات تاریخ و ساعت در SQL Server استفاده می شود. در اینجا قصد داریم برخی از توابع مفید برای کار بر روی DateTime را بررسی کنیم.

بدست آوردن تاریخ جاری در SQL Server

برای بدست آوردن تاریخ و ساعت جاری سیستم می توانید از تابع زیر استفاده کنید

select  getdate()

DATEPART

بدست آوردن بخشی از یک تاریخ در SQL Server

اگر بخواهید بخشی از یک تاریخ و زمان را انتخاب کنید، (مثلا فقط روز یا فقط ساعت و....) می بایست از تابع DATEPART استفاده کنید این تابع دو پارامتر دریافت می کند.
پارامتر اول مشخص کننده بخشی از تاریخ و زمان که می بایست انتخاب شود و پارامتر دوم تاریخی است که شما می خواهید بر روی آن کار کنید.

DATEPART ( datepartEnum , yourDate )


به جای datepartEnum می توانید از مقادیر زیر استفاده کنید

datepart

Abbreviations

year

yy , yyyy

quarter

qq , q

month

mm , m

dayofyear

dy , y

day

dd , d

week

wk , ww

weekday

dw

hour

hh

minute

mi, n

second

ss , s

millisecond

ms

microsecond

mcs

nanosecond

ns

TZoffset

tz

ISO_WEEK

isowk , isoww


ادامه مطلب...

آموزش Team Foundation Server (بخش سوم)

بسم الله الرحمن الرحیم

 

آموزش Team Foundation

بخش اول معرفی TFS

(بخش دوم) نصب و راه اندازی TFS

(بخش سوم) ایجاد یک پروژه بر روی TFS

در بخش های قبل در مورد Online Repository ها صحبت کردیم و نحوه ایجاد یک Team Foundation را بر روی TFS Cloud Repository را بررسی کردیم.

در این بخش قصد داریم تا یک پروژه را بر روی Team Foundation قرار دهیم، اما قبل از شروع بهتر است چند نکته را بررسی کنیم.

ابزارهایی که کد برنامه شما را نگه داری می کنند معمولا امکانات زیادی را ارائه می دهند که این امکانات باعث می شود شما یک ابزار انتخاب کنید. در این جا برخی از ویژگی های مشترک ابزارهای مختلف source control مانند Team Foundation که در حال آموزش آن هستیم را بررسی می کنیم.

توضیح ام را باید یک مثال بیان می کنم. فکر کنید قرار است شما یک برنامه را برای فردی بنویسید، مثلا وب سایت ساده که تعدادی افراد را ثبت نام می کند و به شما یک گزارش ساده می دهد. شما با مشتری خود توافق می کنید و کار را آغاز می کنید.  در ابتدا یک Template برای مشتری طراحی می کنید و طبیعتا مشتری پس از مشاهده Template طراحی شده از شما می خواهد بخش هایی از آن را تغییر دهید.

این تغییرات به صورت مورد به مورد با مشتری بررسی و اعمال می شود تا در نهایت بخش طراحی Template به پایان می رسد.

تصور کنید نیاز پیدا می کنید تا کدها و اطلاعاتی را که در طراحی Template انجام داده اید مجددا استفاده کنید. مثلا صفحه لاگین شما ویژگی هایی داشته که بعد از تعامل با مشتری تغییر داده شده اما اکنون مجددا به هر دلیلی ( تغییر نظر مشتری، نیاز پروژه، استفاده برای پروژه دیگر و...) نیاز به کدهای قبلی خود دارید.

اگر خیلی با تجربه باشید هر چند ساعت یک بار مثل تصویر زیر از فایل های خود یک backup به صورت فایل ZIP ایجاد می کنید (روش زمان دایناسورها)!

آموزش فارسی team foundation server

ادامه مطلب...

آموزش Team Fundation Server (بخش دوم)

بسم الله الرحمن الرحیم

 

آموزش Team Foundation

بخش اول معرفی TFS

(بخش دوم) نصب و راه اندازی TFS

(بخش سوم) ایجاد یک پروژه بر روی TFS

در این بخش قصد داریم یک حساب کاربری در Team Foundation Server ایجاد کنیم و اولین Repository و پروژه خود را در آن ایجاد کنیم.

مانند تمامی Online Repository های موجود مانند github در  TFSنیز شما می توانید Repository خود را ایجاد کنید. در حال حاضر شما می توانید در TFS پروژه خود را ایجاد کنید و تیم خود را مدیریت نمایید. همچنین شما می توانید کد خود را به صورت مستقیم از داخل Visual Studio و یا Eclipse بر روی سرور TFS ارسال کنید. به ارسال اطلاعات بر روی سرور ها و Repository ها check-In می گویند. TFS به صورت Cloud کار می کند در نتیجه شما می توانید از طریق مرورگر خود اطلاعات مربوط به پروژه، باگ ها و... را مشاهده کنید.

TFS به شما اجازه می دهد تا پروژه خود را بر اساس platform های متفاوتی از C# تا Python و همچنین از Windows تا Android ایجاد کنید.

در حال حاضر TFS به شما اجازه می دهد تا یک تیم 5 نفره را به صورت رایگان ایجاد کنید.

 

ادامه مطلب...

آموزش Team Fundation Server

بسم الله الرحمن الرحیم

آموزش Team Foundation

بخش اول معرفی TFS

(بخش دوم) نصب و راه اندازی TFS

(بخش سوم) ایجاد یک پروژه بر روی TFS


یکی از مواردی که باید به عنوان یک اصل در شرکت های نرم افزاری مورد نظر واقع شود، نحوه نگهداری کدها و اطلاعات پروژه ها است.
در سال های نه چندان دور شرکت ها برای نگه داری اطلاعات و بایگانی آنها از روش ساخت فایل های ZIP با تاریخ و زمان استفاده می کردند. طبیعتا در این روش انجام پروژه های تیمی و دست یابی به کد های گذشته و یا لغو یک تغییر کار بسیار مشکلی است.

همین مشکلات باعث شد تا روش های جدیدی برای نگه داری اطلاعات یک پروژه مطرح شود. این روش ها کم کم تکامل پیدا کردند و به عنوان نرم افزارهای مدیریت کد، که به نام های زیر معروف هستند، معرفی شدند:

source control

sourceforge

source code control

source code version control

source code version

و..

این نرم افزار ها به شما این امکان را می دهند که کدهای خود را در یک محل به نام Repository یا منبع نگه داری کنید. این امکان باعث می شود تا همه ی افراد از یک محل برای نگه داری کدها و اعمال تغییرات استفاده کنند، در نتیجه وقتی به صورت تیمی کار می کنید نیازی نیست نگران قراردادن کدهای همه ی افراد در یک پروژه باشید.
طبیعتا وقتی تمامی افراد بر روی یک پروژه کار می کنند باید Log و یا همان سوابق تغییرات صورت گرفته بر روی کدها را به همراه فرد تغییر دهنده ثبت کرد. این کار باعث می شود تا در صورت بروز خطا، مدیر پروژه بتواند سوابق تغییرات را بررسی و پروژه را به آخرین نسخه ی بدون مشکل Restore کند.

source control های زیادی در حال حاضر وجود دارند که هر یک مزایا و معایب خود را دارند که نام برخی را در زیر مشخص کرده ایم.


github

SVN

TFS

ادامه مطلب...

آموزش SQL Server 2014

بسم الله الرحمن الرحیم

آموزش SQL Server 2014

انشالله سعی خواهیم کرد در این دوره آموزشی برخی از مفاهیم و امکانات جدید SQL Server 2014 را بررسی کنیم.

در ابتدا برخی از مفاهیم پایه را بررسی خواهیم کرد و سپس در خصوص تغییرات ایجاد شده در نسخه جدید SQL Server بحث خواهیم کرد.


delayed durability

SQL Server 2014 ویژگی های زیادی را معرفی کرده است یکی از این ویژگی ها Delayed Transaction Durability که در  performance و یا همان عملکرد SQL Server تاثیر بسزایی دارد. برای درک بهتر این ویژگی باید ابتدا Full Transaction Durability را بررسی کنیم. به صورت پیش فرض در حال حاضر SQL Server به صورت Full Transaction Durability عمل می کند. سوالی که بسیار مطرح می شود این هست چه نیازی است که ما از حالت پیش فرض به سمت delayed durability حرکت کنیم. جواب این پرسش را می توان اینگونه بیان کرد که اولویت با کارایی است نه با اتمام انجام یک عملیات.

وقتی در حال نوشتن این مقاله بودم نیاز بود تا چند مبحث مقدماتی را مطرح کنم و از همین رو این مباحث را جستجو کردم اما هیچ منبع فارسی پیدا نشد! واقعا عجیب است که همه بر ادعای خود در خصوص DBA پا فشاری می کنیم اما هیچ یک به مباحث پایه اساس بانک های اطلاعاتی اشراف نداریم، انشالله که دوستان لطف کنند و اینگونه مباحث را برای دیگران نیز مکتوب کنند.
قبل از ادامه دادن باید چند مبحث را بررسی کنیم تا ابتدا بدانیم در گذشته در بانک های اطلاعاتی چه اتفاقی می افتاده و هم اکنون چه اتفاقی می افتد.
در علم رایانه (پارسی را پاس داشتم) چهار مفهوم اصلی Atomicity, Consistency, Isolation, Durability وجود دارد که به صورت اختصار آن را ACID معرفی می کنند.

ادامه مطلب...

آموزش فعال و غیر فعال کردن CONSTRAINT ها بر روی دیتابیس

بسم الله الرحمن الرحیم

فعال و غیرفعال کردن CONSTRAINT در SQL

یکی از مشکلاتی که بسیاری از دوستان دارند، فعال و غیرفعال کردن تمامی constraint ها بر روی یک دیتابیس است. شاید این مشکل برای شما نیز بارها و بارها به وجود آمده باشد که بخواهید یک دیتابیس را بر روی یک دیتابیس دیگر Map کنید در این جا وقتی اولویت انتقال اطلاعات را رعایت نکنید مثلا ابتدا اطلاعات جداول فرزند را انتقال دهید و سپس جداول پدر خطاهایی مربوط به عدم شناسایی کلید خارجی و کلید اصلی و... نمایش داده می شود. در این حال بنده مشاهده کرده ام که دوستان معمولا با حذف Relation ها و یا قیود آنها کار خود را انجام می دهند اما علاوه بر این کارها می توانید از روش های ساده دیگری نیز استفاده کنید.
امروز شما را با چند کد ساده برای این کار آشنا خواهیم کرد.

ادامه مطلب...

بهینه سازی کوئری (بخش دوم، MSSQL Server)

بسم الله الرحمن الرحیم

 

آموزش  بهینه سازی کوئری در  MSSQL Server

یکی از جذاب ترین کارها برای من تعمیر و نگهداری و بهینه سازی سیستم ERP برای کارهای بزرگ است.در یک سیستم که ابتدا برای تعداد محدودی از وظایف طراحی شده بود مشکلاتی ایجاد شد و در طول زمان این سیستم رشد بسیار زیادی کرد و از حد انتظار فراتر رفت.

در این برنامه هنگامی که چند کاربر به طور همزمان از سیستم استفاده می کردند کار با این سیستم عملا غیر ممکن می شد. افزایش ظرفیت عملیاتی در سرور به طور کامل نمی تواند این چنین مشکلاتی را حل کند. پس باید از راه حلهای دیگری استفاده شود، بعد از اصلاح کردن business-functionality  و بهینه سازی پرس وجو ها در استفاده از منابع، مشکل حل و فصل شد.
قبل از این که به این مقاله بپردازم در اینجا مقاله ای در خصوص نحوه بهینه سازی و چگونگی انتخاب یک Query توسط SQL Server توضیحاتی را ارائه داده ام. برای اجرا هر دستور چندین Plan توسط SQL Server طراحی می شود و بر اساس الگورتیم های متفاوت بهترین روش که کمترین هزینه را دارد، انتخاب و مورد استفاده قرار می گیرد.

همچنین شما باید بدانید که یک روش (Plan) به چه صورتی ایجاد می شود از این رو بهتر است مقاله ای که در این زمینه قبلا ارائه داده شد را مطالعه کنید.


برای رسیدن به حداکثر سرعت در اجرای یک دستور query optimizer (بخش های مختلف  کدهای SQL Server را از یکدیگر تفکیک می کند) همیشه تلاش می کند تا یک روش با مجموعه از فعالیت ها که کمترین میزان ممکن از منابع را اشغال می کنند تولید کند.
هنگام ارزیابی هر روش قابل اجرا، بهینه ساز پرس و جو (query optimizer) در حساب های متفاوت فاکتورهای متفاوتی را ایجاد می کند: اشیا پایگاه داده دخالت داده شده، شرایط join شدن آنها با یکدیگر، لیست های بازیابی شده، حضورشاخص ها، در دسترس بود Index ها و آمارهای واقعی و غیره.
با این حال گاهی اوقات بهینه ساز پرس و جو نمی تواند با داده های واقعی کار کند و به همین دلیل ممکن است در زمان استفاده از روش های مختلف بیشتر یا کمتر از مقدار ارزیابی شده هزینه خود را محاسبه کند. همین امر موجب می شود در گاهی اوقات یک روش بهینه سازی نشده انتخاب شود!

SSMS اجازه می دهد روش های قابل اجرا را به همراه راهنمای هر روش مشاهده کنید.
اگر چه، ارزیابی پرس و جو ها فرایند پیچیده است و نمی توان به سادگی این کار را انجام داد. به همین دلیل من برای اینکار از یک ابزار با قابیلتهای مناسب برای اینکار استفاده می کنم.

ادامه مطلب...

آموزش ویندوز آژور

بسم الله الرحمن الرحیم

آموزش ویندوز آژور و ایجاد یک وب سایت در Windows Azure

در این آموزش می خواهیم نحوه ایجاد یک وب سایت را بر روی Windows Azure Management Portal بررسی کنیم. برای این آمزوش یک وب سایت را publish خواهیم کرد. همچنین در مورد مزایای Web Deploy publishing توسط Windows Azure صحبت خواهیم کرد.

ساخت یک وب سایت به وسیله Windows Azure 

برای شروع می بایست به ادرس Windows Azure Management Portal برویم و با استفاده از یک حساب کاربری Microsoft لاگین کنید.
در Windows Azure شما می تواند تا 10 وب سایت را به صورت رایگان میزبانی (Host) کنید.
برای ثبت نام می توانید از طریق این لینک اقدام کنید.

آموزش Windows Azure

ادامه مطلب...

نمایش کانکشن های فعال در SQL Server

بسم الله الرحمن الرحیم

بدست آوردن کانکشن های فعال در 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

مانیتور کردن SQL Server و ساخت برنامه ی Real Time

بسم الله الرحمن الرحیم



در این آموزش قصد دارم شما را با یکی دیگر از ویژگی های 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 استفاده کنید.

ادامه مطلب...

خطای cycles or multiple cascade paths

بسم الله الرحمن الرحیم

خطای زیرا شاید خیلی از شما دوستان عزیز نیز مشاده کردید:

Introducing FOREIGN KEY constraint 'FK_dbo.aspnet_UsersInRoles_dbo.aspnet_Users_UserId' on table 'aspnet_UsersInRoles' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors

برای حل این مشکل می توانید از Fluid API استفاده کنید،

در این مثل اگر من کد زیر را به Context خود اضافه کنم مشکل بالا برطرف خواهد شد:

protected override void OnModelCreating( DbModelBuilder modelBuilder )
{

        modelBuilder.Entity<aspnet_UsersInRoles>().HasMany(i => i.Users).WithRequired().WillCascadeOnDelete(false);
}

همچنین با استفاده از این کد می توانید تمامی CASCADE DELETES ها را از بین ببرید:

modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

اینم مشکل زمانی رخ می دهد که شما در طراحی دیتابیس خود یک چرخه یا Loop ایجاد کرده اید مانند تصویر زیر:

multiple cascade

اگر به متن خطای بالا دقت کنید مشاهده خواهید کرد که عبارت may cause cycles or multiple cascade paths قید شده است، همان طور که خدمتتان عرض کردم، اگر در طراحی دیتابیس شما چندین جدول را به صورت بالا طراحی کنید که با یکدگیر در ارتباط باشند و این ارتباط به صورت یک چرخه شود، و سعی کنید بر روی این چرخه CASCADE ایجاد کنید، SQL Server نمی تواند متوجه بشود که چطور فرایند بروز رسانی Update CASCADE یا حذف Delete CASCADE شما را مدیریت کند زیرا هر یک از این جداول بر روی یکدیگر تاثیر می گذارند و در صورتی که فرایند CASCADE آغاز شود نقطه پایانی وجود نخواهد داشت.

Delete CASCADE و Update CASCADE

برای حل این مشکل می توانید به صورت زیر عمل کنید:

1- فرایند CASCADE را غیر فعال کنید (در صورت غیر فعال کردن باید این فرایند را به صورت Manually مدیریت کنید)

2- Relation را حذف کنید (در صورت حذف کردن باید این فرایند را به صورت Manually مدیریت کنید)

طراحی دیتابیس

در چنینی شرایطی معمولا طراح دیتبیس اشتباهی را مرتکب شده است، پس بهتر است از او بخواهید تا دیتابیس خود را مجددا بررسی کنید، زیرا مدیریت کردن راه حل های بالا که قید شد کمی دقت لازم دارد

انشالله در اولین فرصت روش های ایجاد Relation را در MVC معرفی خواهم کرد

up
ما را در گوگل محبوب کنید