۱۷ مطلب با کلمهی کلیدی «Sql» ثبت شده است
حذف تمام پروسیجر ها
بسم الله الرحمن الرحیم
حذف کردن تمامی پروسیجر ها
برای دوستان عزیز که در تیم طراحی پایگاه داده SQL فعالیت می کنند مطلبی را آماده کردم که انشالله مفید واقع شود.
برای حذف تمامی پروسیجر های موجود در یک پایگاه داده کافی است که کد زیر را اجرا کنید تا تمامی پروسیجر های شما
حذف شوند.می توان این دستور را به صورت یک پروسیجر ذخیره کنید تا در مواقع نیاز از آن استفاده کنید و در نهایت کد ما
به این صورت می شود.
ادامه مطلب...
فعال کردن قابلیت Remote به SQL Server
بسم الله الرحمن الرحیم
ممکن است شما بخواهید بر روی SQL Server خود این امکان را قرار دهید تا بتوانید بیرون از سرور به SQL Server دسترسی داشته باشید.
برای این کار چند لینک مفید را به شما معرفی می کنم
http://msdn.microsoft.com/en-us/library/cc646023.aspx
http://cs.thomsonreuters.com/ua/toolbox/cs_us_en/kb/k73037522.htm
http://www.mssqltips.com/sqlservertip/1929/configure-windows-firewall-to-work-with-sql-serve
آموزش ساخت Connection String
بسم الله الرحمن الرحیم
یک راه ساده برای ایجاد و تست Connection String امروز فرا خواهید گرفت.
برای شروع کافی است در دسکتاپ خود کلیک راست کنید و گزینه new را انتخاب و سپس یک فایل Text Document ایجاد کنید حال پسوند فایل ایجاد شده را به UDL تغییر دهید (یادتان باشد باید پسوند فایلها را ابتدا از طریق Control Panel -> Folder Options -> View گزینه Hide extensions for known file type را غیر فعال کنید ). حال بر روی فایل دابل کلیک کنید تا باز شود و به ترتیب می توانید مشخصات نام سرور خود، نام کاربری و کلمه عبور سرور خود و در نهایت انتخاب پایگاه داده خود را انجام دهید.
در نهایت پس از تکمیل اطلاعات بر روی گزینه Test Connection کلیک کنید تا مطمن شوید یک کانکشن صحیح ایجاد شده است.
برای استفاده از Connection String تولید شده می توانید بر روی فایل کلیک راست کنید و آن را دریک برنامه مثل Notepad باز کنید و از اطلاعات آن استفاده کنید.
تغییر دادن مقدار Timeout در SqlCommand
بسم الله الرحمن الرحیم
در بعضی اگر شما بخواهید یک دستور اسکیوال را از طریق سی شارپ فراخوانی کنید که مدت زمان اجرای آن دستور بسیار طولانی باشد با خطای زیر مواجه می شوید:
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The statement has been terminated
برای حل این مشکل شما باید مدت زمان Timeout را در SQL Command افزایش دهید و یا این پارامتر را غیر فعال کنید.
به صورت پیش فرض مدت زمان CommandTimeout در SqlCommand برابر با 30 ثانیه می باشد که شما می توانید به صورت زیر آن را تغییر دهید
SqlCommand sqlCommand= new SqlCommand("select * from table_EduOnline");
SqlCommand.CommandTimeout = 100;//100 secound
و یا با مساوی قرار دادن CommandTimeout برار با 0 آن را غیر فعال کنید
SqlCommand.CommandTimeout = 0;// disable
با استفاده از دستور Delay می توانید این خاصیت را تست کنید، مثال:
static void Main(string[] args)
{
string cString = @"Data source=<your server>;Integrated Security=SSPI;Initial Catalog=Northwind";
using (SqlConnection sc = new SqlConnection(cString))
{
try
{
SqlCommand cmd = new SqlCommand("waitfor delay '00:00:30';select * from Shippers", sc);
cmd.CommandTimeout = 10;
Console.WriteLine("CommandTimeout: {0}", cmd.CommandTimeout);
sc.Open();
SqlDataReader r = cmd.ExecuteReader();
while (r.Read())
Console.WriteLine("{0} : {1}", r[0].ToString(), r[1].ToString());
sc.Close();
}
catch (SqlException se)
{
Console.WriteLine(se);
}
}
}
معرفی OLAP و OLTP
بسم الله الرحمن الرحیم
آموزش OLAP و OLTP
با توجه به تکنولوژی های مرتبط در خصوص طراحی و پیاده سازی پایگاه داده ها برای استفاده از سرویس های تحلیلی می توان این پایگاه داده را به دو
دسته کلی تقسیم کرد:
OLAP: همان طور که از نام این گروه مشخص است این پایگاه داده ها برای تحلیل و بررسی مورد استفاده قرار می گیرند که طبیعتا طراحی و ساختار آن با پایگاه داده های معمولی متفاوت خواهد بود. مثلا در طراحی این پایگاه داده ها از ایندکس های بیشتری استفاده می شود که سرعت واکشی و دسترسی به اطلاعات افزایش می یابد اما در عین حال سرعت درج و بر روز رسانی کاهش یافته که این مسئله باعث می شود همین کار در پایگاه داده های OLTP مناسب نباشد. معمولا این پایگاه داده را با کلمه DW خاتمه می یابند. DW مخفف عبارت Data warehouse می باشد که بیانگر پایگاه داده هایی است که برای تحلیل طراحی شده اند
OLTP: این پایگاه داده ها، همان پایگاه داده های اصلی هستند که طبیعتا هر مهندس DBA آن را برای بایگانی و جمع آوری اطلاعات ایجاد می کند. در مبحث BI (یا همان Business Intelligence که قبلا توضیحاتی را ارائه داده شد،BI در واقع بیانگر تبدیل داده ها برای تفسیر و تحلیل برای تجارتی هوشمند می باشد) شما می بایست ابتدا پایگاه داده خود را به صورت ساختار یافته طراحی کنید و سپس برای مباحث DM نسخه جدیدی از آن طراحی کنید البته معمولا در صورتی که پایگاه داده شما به درستی طراحی شده باشد تغییرات زیادی لازم نیست.
مفاهیم مربوط به طراحی OLAP
مهمترین مفهومی که در طراحی سرویس های تحلیلی وجود دارد، مکعب است. مکعب، نمایشی چند بعدی از مقدار کمی مورد تحلیل است. اگر بخواهیم خیلی صریح توضیحی ارائه دهیم، این مثال را در نظر بگیرید که شما می خواهید بدانید هر کالا با چه تعدادی و در چه زمان هایی و توسط چه مشتریانی خریداری شده است. خوب هر کدام از پارامتر ها را یک مقیاس در نظر بگیرید (طول، عرض و ارتفاع) اما نکته قابل توجه این مسئله است که در این مفاهیم می تواند بعد های بیشتری داشت، در این مثال پارامترهای دیگری چون فروشند گان، نوع فروش، سیستم کالا بر، و... پارامترهای دیگری را می توان دخیل کرد اما چون می خواهیم مثال ما ساده باشد همان سه بعد را در نظر می گیریم.
ادامه مطلب...مفاهیم دیتا ماینینگ
بسم الله الرحمن الرحیم
آموزش دیتا ماینینگ
با توجه به طراحی و پیاده سازی سیستم های اتوماسیون اداری، در حال حاضر بسیاری از سازمان ها از اینگونه نرم افزار ها برای مدیریت فرایندهای درون سازمانی استفاده می کنند. با توجه به این موضوع شاید تجربه از بین رفتن اطلاعات یا قطع شدن سیستم برای بازهای زمانی کوتاه وطولانی و در هر صورت به وجود آمدن مشکلات بسیار بزرگ را داشته باشید.
در تکنولوژی های جمع آوری اطلاعات، مبحثی با عنوان DA یا به اصطلاح Data Availability که به معنای تداوم پذیری دسترسی به داده ها است به عنوان دغدغه اصلی تمامی سازمان ها می باشد.
ادامه مطلب...جداول موقت در 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
ادامه مطلب...
ساخت Transaction در سی شارپ
بسم الله الرحمن الرحیم
آموزش برنامه نویسی آسنگرون در سی شارپ
در مطالب گذشته نحوه اجرای Transaction را در اسکیوال بیان کردم، خوب بسیاری از مزایای این کار بیان شد حال همین موارد را می توانیم در سی شارپ پیاده سازی نماییم، بدون توضیحات اضافی مثالی را بررسی می کنیم:
ادامه مطلب...آموزش 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 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 استفاده کنید
ادامه مطلب...
معرفی فایلهای 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 کردن سرور اطلاعات را پس از راه اندازی بازیابی کند و دستورات به اتمام نرسیده را بازیابی کرده و پایگاه داده را به حالت اولیه بر می گرداند.
ادامه مطلب...آموزش MaintenancePlan
بسم الله الرحمن الرحیم
آموزش MaintenancePlan در SQL Server
در این بخش قصد دارم بخشی را با عنوان Maintenance plan که یکی از قابلیت های SQL server می باشد معرفی کنم. شما با استفاده از این قابلیت می توانید یک برنامه یا همان plan را تعرفی نمایید و سپس می توانید این plan را در بازه های زمانی مشخص اجرا نمایید و به عنوان یک Job درSQL معرفی نمایید.
سعی می کنم با یک مثال ساده این قضیه را روشن تر کنم. برای این کار من قصد دارم یک plan برای گرفتن بک آپ به صورت روزانه از تمامی دیتابیس ها ایجاد کنم.
در بخش Maintenance plan کلیک راست کنید و بر روی گزینه New Maintenance plan کلیک نمایید و در پنجره باز شده یک نام انتخاب کنید.
در بالای پنجره Maintenance plan بر روی گزینه Subplan Schedule کلیک نمایید و در پنجره باز شده پارامترهای اجرا برنامه و زمان بندی را مطابق انچه نیاز دارید تنظیم نمایید در این جا ما می خواهیم برنامه ما هر روز در یک ساعت مشخص و بدون محدودیت برای همیشه اجرا شود حال پنجره را Ok کنید.
ادامه مطلب...
تفاوت بین 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) است.
ادامه مطلب...