۱۸ مطلب با کلمهی کلیدی «آموزش اسکیوال» ثبت شده است
حذف تمام پروسیجر ها
بسم الله الرحمن الرحیم
حذف کردن تمامی پروسیجر ها
برای دوستان عزیز که در تیم طراحی پایگاه داده SQL فعالیت می کنند مطلبی را آماده کردم که انشالله مفید واقع شود.
برای حذف تمامی پروسیجر های موجود در یک پایگاه داده کافی است که کد زیر را اجرا کنید تا تمامی پروسیجر های شما
حذف شوند.می توان این دستور را به صورت یک پروسیجر ذخیره کنید تا در مواقع نیاز از آن استفاده کنید و در نهایت کد ما
به این صورت می شود.
ادامه مطلب...
خطای Cannot open user default database
بسم الله الرحمن الرحیم
برطرف کردن خطای Cannot open user default database
هر User در SQL Server یک Database Default دارد، شما می توانید Database پیش فرض یک User را از طریق بخش Security زیر منو Logins برای User خود مشخص کنید. در تصویر زیر ما بر روی کاربر Sa دابل کلیک کرده ایم.
همانطور که در تصویر بالا مشاهده می کنید، در اینجا پایگاه داده پیش فرض کاربر ما Master می باشد.
اگر شما به هر دلیلی پایگاه داده پیش فرض یک User را حذف کنید، خطای زیر اتفاق خواهد افتاد.
حال اگر شما تنها یک کاربر برای SQL Server خود داشته باشید و پایگاه داده پیش فرض این کاربر را حذف کنید، طبیعتا دیگر نمی توانید به Instance مربوطه Login کنید.
در این شرایط راه حل اول نصب یک Instance جدید برای SQL Server است، در این شرایط طبیعتا دیگر به سایر دیتابیس های Instance قبلی دسترسی نخواهید داشت!
راه حل دوم تغییر پایگاه داده پبش فرض یک User توسط SQL Command می باشد.
جداول موقت در SQL Server
بسم الله الرحمن الرحیم
آموزش جداول موقت در SQL Server
همانطور که می دانید در SQL server یک پایگاه داده از پیش تعریف شده با نام Tempdb وجود دارد، در بعضی مواقع شما نیاز به یک جدول موقت نیاز دارید این جداول در این پایگاه داده ذخیره می شود البته جداول به دو دسته تقسیم می شوند یکی ما متغییر هایی از جنس جدول و دیگری جداول موقت، منظور ما جداول موقت است.
خوب برای استفاده از ویژگی متغییر های جداول موقت کافی است مثل مثال زیر عمل نمایید:
DECLARE @Table TABLE
(
id INT ,name NVARCHAR(MAX)
);
DECLARE @i INT =0
WHILE(@i<20)
BEGIN
INSERT INTO @Table ([id],[name]) VALUES (@i,'ESH')
SET @i+=1;
END
SELECT * FROM @Table
--UPDATE
--DELETE
ادامه مطلب...
آموزش PIVOT در SQL Server
بسم الله الرحمن الرحیم
آموزش SQL Server
در بعضی مواقع نیاز است بجای نمایش نام ستون ها، مقدار فیلد به عنوان نام ستون و مقدار آن زیر ستون نمایش داده شود خوب بدون توضیح اضافی یک مثال مطرح می کنیم
SELECT [shiraz],[tehran]
FROM
(
SELECT [name]
,[salary]
FROM [emp]
) AS TEMP
PIVOT
(
SUM(salary) FOR [name] IN ([shiraz],[tehran])
)AS PVT
و در نهایت خروجی دستور
ادامه مطلب...همگام و ناهمگام در SQL
بسم الله الرحمن الرحیم
آموزش برنامه نویسی ناهمگام در سی شارپ
در این بخش می خواهیم در خصوص نحوه و شیوه های اجرای دستورات در اسکیوال مباحثی را معرفی کنیم. همان طور که شما می دانید در زبان های مختلف برنامه نویسی در خصوص نحوه اجرای دستورات دو روش اصلی Synchronize و ASynchronize وجود دارد. در روش Synchronize تا اتمام دستورات نرم افزار شما عملا متوقف شده و به اصطلاح Lock می شود خوب وقتی این اتفاق برای ثبت یک رکورد باشد هیچوقت محسوس نیست اما فکر کنید این فرایند برای ثبت تعداد زیادی رکورد اتفاق بیافتد در این حالت سایر پردازش های نرم افزار شما باید منتظر بمانند تا فرایند کار با اسکیوال به پایان برسد!
در روش دوم ASynchronize، پردازش های اسکیوال شما همراه با سایر پردازش های نرم افزار شما همزمان انجام خواهد شد.
مثال:
برای دانلود مثال لطفا کلیک کنید
عنوان: ASynchronize
حجم: 1.05 کیلوبایت
چطور سرعت واکشی اطلاعات را افزایش دهیم؟
بسم الله الرحمن الرحیم
آموزش SQL Server
در بسیاری از پروژه ها به دلیل حجم پایین اطلاعات و تراکنش اندک در RW کردن اطلاعات هیچ نیازی به بهینه سازی اطلاعات نیست، اماممکن است شما هم مثل بنده بخواهید پایگاه داده ای را طراحی کنید که سرعت واکشی بسیار مهم باشد.
مثلا یک سایت بزرگ را در نظر بگیرید، سایتی مثل facebook این سایت چه تعداد کاربر دارد حجم تبادل اطلاعات آن چقدر است و هر روز به صورت نجومی این حجم اطلاعات در حال افزایش است، واقعا خیلی زیبا است که چطور با این حجم اطلاعات بتوان کار کرد (من شخصا پایگاه دادهایی را بیشتر از چندین گیگابایت تجربه کردم ولی تا این حد را تجربه نکردم) خوب کمی واقعی فکر کنیم! مثلا این را در نظر بگیرید که می خواهید یک سایت جامعه مجازی فقط و فقط برای یک شهر ایران بنویسید و طراحی پایگاه داده آن با شما است.
ادامه مطلب...
معرفی دو DataType در SQL
بسم الله الرحمن االرحیم
آموزش SQL Server
Timestamp
در بعضی مواقع نیاز است شما اطلاعات درون یک پایگاه داده را به صورت Mirror ذخیره کنید، یعنی ما یک پایگاه داده اصلی و یک پایگاه داده پشتیبان داریم که اطلاعات بر روی پایگاه داده اصلی RW می شود و نسخه ای از آن نیز بر روی پایگاه داده دوم بایگانی می شود. خوب فکر کنید این کار را در سطح بسیار کوچکتر و فقط بر روی یک جدول در یک پایگاه داده انجام دهید یعنی اطلاعات این جدول با ارزش بوده و می خواهید به صورت ساده هر تغییری که در اطلاعات جدول شماره یک صورت گرفت بر روی جدول شماره دو انجام شود. راه حل؟
خوب بعضی ها اولین راه را انتخاب می کنند یعنی هر عملیات CUD را بروی جدول شماره یک اگر صورت گرفت بر روی جدول شماره دو نیز همان کار را تکرار می کنند، خوب است.
خوب راه دیگر استفاده از فیلد TimeStamp است که مقدار باینری را در خود نگه می دارد، در صورتی که مقدار رکورد عوض شود مقدار باینری این فیلد نیز عوض خواهد شد
پس اگر بخواهید متوجه شوید که مثلا بر روی رکورد شما توسط کاربر تغییری صورت گرفته می توان با مشاهده مقدار این فیلد، به این جواب برسید مثال:
ادامه مطلب...
آموزش SQL Transaction
بسم الله الرحمن الرحیم
آموزش SQL Transaction
در این بخش قصد دارم مدیریت تراکنش های اسکیوال را به صورت مختصر توضیح دهم
توسط متغییر Global، @@Error می توانیم شماره خطا را بازیابی نماییم اگر خطایی داشته باشیم مقدار این متغییر از صفر بزرگتر است در غیر این صورت مقدار آن صفر است و در صورتی که از این متغییر استفاده کنیم مجددا مقدار این متغییر صفر می گردد
همچنین جهت خواندن شماره خطا می توانیم از Error_Number() استفاده کنیم و جهت چاپ متن خطا از Error_Message استفاده می کنیم
جهت ایجاد یک خطا به صورت دستی می توانیم از RAISERROR استفاده کنیم
مثال
RAISERROR('خطایی رخ داده است',16,1)
به دلیل وجود کاراکترهای فارسی و انگلیسی جای متن خطا از ابتدا به انتها منتقل شده به همین دلیل تصویری در انتهای مطلب قراردادم که گویا ی موضوع باشد
عدد 16 محدوده خطا را مشخص می کند بهتر است همیشه از این عدد استفاده کند چون این عدد خطای ایجاد شده را به برنامه ی شما (مثلا سی شارپ) نیز ارسال می کند.
کاربرد این دستور برای مواردی است که شما می خواهید در صورت برقرار نشدن یک شرط دستورات خاتمه یابد مثلا برای جلوگیری از درج یک رکورد جدید در جدول کاربران با نام کاربری که قبلا ثبت شده است.
در مواردی که شما می خواهید در یک تراکنش تنها بخشی را خاتمه دهید ولی تراکنش همچنان ادامه داشته باشد کافی است که شما از دستور Save Point استفاده نمایید
مثال
BEGIN TRAN PARRNT
INSERT INTO USERS(userName,[password]) VALUES ('A','A')
PRINT 'INSERTED A'
BEGIN TRY
SAVE TRAN INSERT_PART
RAISERROR ('خطایی رخ داده است',16,1)
INSERT INTO USERS(userName,[password]) VALUES ('B','B')
PRINT 'INSERTED B'
END TRY
BEGIN CATCH
ROLLBACK TRAN INSERT_PART
END CATCH
INSERT INTO USERS(userName,[password]) VALUES ('C','C')
PRINT 'INSERTED C'
COMMIT TRAN PARENT
آموزش Constraint
بسم الله الرحمن الرحیم
آموزش SQL Server
در هر پایگاه داده ای که طراحی می شود وابسته به این که این سیستم برای چه محیطی طراحی شده است محدودیت ها و قید و شرطهایی مطرح می شود. مثلا قصد داریم برای یک شرکت تجاری پایگاه داده ای طراحی کنیم و پرسنل این شرکت در هیچ شرایطی در خصوص شروع اضافه کاری نباید ساعات بین 22 الی 6 صبح باشد. راه حل های ساده ای وجود دارد و معمولا اکثر برنامه نویسان این وظیفه را به جای طراحان انجام می دهند و طبیعتا این کار را در Application مورد نظر نوشته می شود خوب راه حل دیگر این است که ما به عنوان طراح این کار را در پایگاه داده انجام دهیم و کمکی به همکار برنامه نویسمان کنیم.
مثال
ادامه مطلب...
آشنایی با SQL
بسم الله الرحمن الرحیم
آموزش SQL Server
DataBase Engine
در واقع مهمترین بخش اسکیو ال است که وظیفه مدیریت و اجرای سرویس های پایه را بر عهده دارد ساخت دیتابیس، مدیریت رشد db، ساخت جداول، جستجو، مرتب سازی، ایندکس کردن، اجرای دستورات، ساخت توابع و پروسیجر و تریگر، امکان برنامه نویسی از راه دور، امنیت، نسخه پشتیبان، اتچ کردن، همه توسط این بخش صورت می گیرد.
نرم افزار SQL Server Business Intellgince
به صورت مختصر و مفید باید گفت برنامه ای است که توانایی اجرای دستورات C# را در اسکیوال دارد.
SSMS
به صورت مختصر و مفید باید گفت نرم افزاری است که توسط آن می توانیم به تمامی امکانات اسکیوال به صورت گرافیکی دسترسی داشته باشیم.
خوب سعی کردم تمام این مطالب را کمی مختصر مطرح کنم تا برسیم سراغ بحث اصلی خودمان، در بعضی ممکن است شما بخواهید بر روی یک سیستم کارها و دستورات اسکیوال را اجرا کنید ولی به دلیل محدودیت هایی نمی توانید اسکیوال سرور را به صورت کامل نصب کنید تا از بخش های مدیریت آن استفاده کنید، خوب راه حل ؟
شما کافی است از نرم افزار کوچکی به نام SQL Comand در Command line استفاده کنید
ادامه مطلب...
آموزش Transaction
بسم الله الرحمن الرحیم
آموزش Transaction
مورد فایل LDF قبلا توضیحاتی ارائه گردید همان طور که قبلا ذکر کردیم نام این فایل Transaction DataBase File می باشد و وظیفه آن ذخیره دستورات برای اجرای کامل آنها در صورت ایجاد مشکل می باشد.
برای استفاده هوشمندانه از این ویژگی می بایست به صورت زیر عمل کنیم:
BEGIN TRAN T1
SELECT * FROM Account
COMMIT TRAN T1
BEGIN TRAN T1
این دستور باعث می شود خطوط بعدی در رم ذخیره شود.
COMMIT TRAN T1
باعث می شود کل دستورات در فایل ذخیره می شود.
ادامه مطلب...معرفی فایلهای SQL
بسم الله الرحمن الرحیم
آموزش SQL Server
هر بانک اطلاعاتی از سه فایل تشکیل می شود:
(Master DataBase File) MDF: فایل اصلی SQL می باشد که تمامی جداول، رکوردها، توابع برنامه نویسی را ذخیره می کند. تمامی فایلها در SQL به قطعه های مساوی 8K تقسیم می شوند که به آنها DataPage گفته می شود هر DataPage تنها اطلاعات یک جدول را نگه داری می کند در صورت ایجاد جدول جدید اطلاعات در اولین DataPage خالی ثبت می شود. در صورتی که DataPage خالی دیگر موجود نباشد از تکنیک File Growth استفاده می شود.
(Transaction DataBase File) LDF: تمامی عملیات هایی که سبب تغییر در پایگاه داده می شود در این فایل ذخیره می شود مثلا Bacth Command ها (به دستوراتی که با هم اجرا می شوند. در واقع در SQL دستورات ابتدا در فایل ذخیره می شود تا در صورتShutDown یا Crash کردن سرور اطلاعات را پس از راه اندازی بازیابی کند و دستورات به اتمام نرسیده را بازیابی کرده و پایگاه داده را به حالت اولیه بر می گرداند.
ادامه مطلب...آموزش Cursor در SQL Sever
بسم الله الرحمن الرحیم
آموزش Cursor در SQL Sever
در بسیاری مواقع شما نیاز دارید اطلاعات را به صورت رکورد به رکورد بررسی کنید، اولین راه حل ایجاد یک برنامه است اما اگر بخواهیم این کار را در SQL انجام دهیم چطور؟ همانطور که مشخص است دستور SELECT این کار را برای ما انجام می دهد با این تفاوت که نمی توانیم تک تک رکوردها را بررسی کنیم بلکه خروجی دستور SELECT یک ResualtSet یا در واقع یک Dataset است.
دستور Cursor می تواند خروجی دستور SELECT را در حافظه نگه دارد و تک تک آنها را بررسی کند.
مثال
@id uniqueidentifier,
@userName varchar(20),
@password varchar(20)
DECLARE AccountRows CURSOR FOR SELECT id,userName,password FROM Account
AccountRows متغییری از جنس CURSOR تعریف کردیم تا اطلاعات را در خود ذخیره کند.
ادامه مطلب...آموزش MaintenancePlan
بسم الله الرحمن الرحیم
آموزش MaintenancePlan در SQL Server
در این بخش قصد دارم بخشی را با عنوان Maintenance plan که یکی از قابلیت های SQL server می باشد معرفی کنم. شما با استفاده از این قابلیت می توانید یک برنامه یا همان plan را تعرفی نمایید و سپس می توانید این plan را در بازه های زمانی مشخص اجرا نمایید و به عنوان یک Job درSQL معرفی نمایید.
سعی می کنم با یک مثال ساده این قضیه را روشن تر کنم. برای این کار من قصد دارم یک plan برای گرفتن بک آپ به صورت روزانه از تمامی دیتابیس ها ایجاد کنم.
در بخش Maintenance plan کلیک راست کنید و بر روی گزینه New Maintenance plan کلیک نمایید و در پنجره باز شده یک نام انتخاب کنید.
در بالای پنجره Maintenance plan بر روی گزینه Subplan Schedule کلیک نمایید و در پنجره باز شده پارامترهای اجرا برنامه و زمان بندی را مطابق انچه نیاز دارید تنظیم نمایید در این جا ما می خواهیم برنامه ما هر روز در یک ساعت مشخص و بدون محدودیت برای همیشه اجرا شود حال پنجره را Ok کنید.
ادامه مطلب...
پیکربندی Database Mail وارسال ایمیل از طریق Database Mail
بسم الله الرحمن الرحیم
آموزش DataBase Mail
پیکربندی Database Mail وارسال ایمیل از طریق Database Mail
در این مقاله قصد داریم یک Database Mail راه اندازی کنیم و بهتر است دوستانی که باDatabase Mail آشنایی ندارند ابتدا معرفی و تفاوت آن را با SQLMail که قبلا در مورد آن مطلبی را قرار داده ام بررسی کنند.
برای شروع کار ابتدا باید Database Mail را پیکر بندی کنیم، در این مرحله ابتدا یک profile ایجاد می کنیم
ابتدا SSMS (اسکیوال سرور) را باز می کنیم در بخش سمت چپ Object Explorer بر روی Management کلیک می کنیم و از گزینه های زیر مجموعه آن بر روی Database Mail کلیک راست می کنیم و گزینه Configuration Database Mail را انتخاب می کنیم
ادامه مطلب...تفاوت بین SQLMAIL و Database Mail
بسم الله الرحمن الرحیم
این مبحث را برای دوستان تیم طراحی پایگاه داده قرار دادم انشالله مفید واقع شود
تا کنون کسی را ندیده ام که اولا تفاوت این دو را بداند (در بحث های انجام شده در تمامی سایت هایی که بررسی کرده ام؛ هیچ بحثی در این مورد وجود ندارد!) و دوما هیچ کس از این روش برای ارسال ایمیل استفاده نمی کند مجددا در هیچ مطلب فارسی این مبحث مطرح نشده است به همین دلیل این مطلب را قرار داده تا شاید دوستان خارج از مجموعه با مباحث این چنینی بیشتر آشنا شوند
Database mail یک مفهوم جدید است که در SQL Server 2005 مطرح شد و جایگزین SQLMail در نسخه های قبل تر Sql گردید
Database Mail چندین مزیت و پیشرفت بر SQLMail دارد. Database Mail بر اساس SMTP (Simple Mail Transfer Protocol) و همچنین خیلی سریعتر و قابل اعتماد تر از SQLMail است و SQLMail بر اساس MAPI (Messaging Application Programming Interface) است.
ادامه مطلب...بهینه سازی کوئری
بسم الله الرحمن الرحیم
بخش های ابتدایی این مقاله مباحث تئوری خواهد بود، باتوجه به پیشنهاد دوستان یک مثال کامل به همراه مطالب تئوری لازم را در این مثال بیان نموده ایم که می توانید از آن نیز استفاده کنید.
برای دوستان عزیز که در تیم طراحی پایگاه داده SQL فعالیت می کنند مطلبی را آماده کردم که انشالله مفید واقع شود.
برای اینکه بفهمید چطور می توانید یک کد اسکیوال با کارایی مناسب بنویسید نیاز است که درک کنید که کدهای بهینه چطور کار می کنند.
بهینه ساز های کوئری اسکیوال بهینه سازی را بر مبنای هزینه انجام می دهند.
این آنالیز ها یکی از روش های اجرایی انتخاب شده است برای کوئری مشخص، تخمین زدن هزینه هر کدام از این روش ها و انتخاب روشی که کمترین هزینه در بین گزینه های مورد نظر را داشته باشد
درواقع با توجه به اینکه بهینه ساز کوئری نمی تواند هر طرح ممکن را برای هر کوئری در نظر گیرد
این عملا انجام یک فعالیت متعادل بر پایه ی هزینه است که درنظر گرفتن دو هزینه یکی هزینه یافتن روش بالقوه و دیگری هزینه خود روش.
ادامه مطلب...حذف کانکشن های یک دیتابیس
بسم الله الرحمن الرحیم
برای دوستان عزیز که در تیم طراحی پایگاه داده SQL فعالیت می کنند این کد بسیار کارا خواهد بود.
برای اینکه شما بتوانید یک پایگاه داده را Restore کنید می بایست ابتدا تمامی Connection های آن را حذف کنید برای این فرایند کافی است که دستور زیر را بر روی پایگاه داده خود اجرا نمایید (بجای MyDATABASE نام پایگاه داده خود را وارد نمایید). البته این مشکل مربوط به نسخه های قدیمی SQL می باشد.
اما به هر حال بسیاری از مواقع شما نیاز دارید تمامی Connnection های فعال اسکیوال سرور را حذف کنید. برای این کار کافی است تکه کد زیر را بروی دیتابیس مورد نظر خود اجرا کنید.
ادامه مطلب...