آی تی نرد

اشتراک اطلاعات و تجربیات در زمینه ی توسعه ی دات نت و البته شیرپوینت

مقایسه ی Sql Server با MySql با استفاده از گفته های هر دو طرف

شاید در ابتدا به ذهن اغلب افراد بیاد که چه لزومی واقعا به این مقایسه هست؟ خب معلومه که Sql Server بهتره یا حتی برعکس MySql بهتر هست.

معمولا دوستان از جمله خود بنده همیشه سمتی هستیم که تجربیاتمون هست برای مثال اگه بیشتر یا فقط با Sql کار کرده باشیم مطمئنا طرف Sql خواهیم بود و بالعکس. ولی واقعیت این هست که برای زندگی حرفه ای راحت تر همیشه باید طرف درست بود، خب البته این درست بودن بستگی به پارامترهای زیادی داره برای مثال بودجه، زمان، توانایی فنی و موارد دیگه که در نهایت طرف درست رو مشخص میکنه.

از مطالب بالا میشه استنباد کرد که هیچ مطلبی نمیتونه طرف درست رو برای همه ی افراد مشخص کنه به دلیل همون پارامترهایی که در همه ی افراد ممکن هست متفاوت باشه. اما با کنار گذاشتن این موارد میشه این مقایسه رو انجام داد.

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

ابتدا از منظر مایکروسافت بررسی و قضاوت کنیم:
ابتدا باید به یک سوال اساسی پاسخ داد کدام یک Open Source یا Commercial ؟ برای پاسخ باید ویژگی های هر کدوم رو بررسی کرد.

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

برای مثال خود اوراکل توصیه میکند که هزینه های پشتیبانی برنامه رو هم پرداخت کنید تا در صورت بروز مشکل بتوانند به شما کمک کنند و سریع تر ان را رفع کنید.

نکته ی دیگه ای که در مورد برنامه های سورس باز وجود دارد این هست که به دلیل اینکه تعداد برنامه نویسان داوطلب برروی این برنامه ها(البته برنامه های بزرگی مانند همین MySql) معمولا زیاد هست و شاید توانایی همه ی این برنامه نویسان در سطح مناسب نباشد به راحتی برنامه دارای باگ و یا حفره های امنیتی شود در صورتی که فرایند شروع کار برنامه نویس برروی برنامه های تجاری(پولی) مطمئنا سخت تر و دارای نظارت بیشتر می باشد.
برای مثال یکی از روزهای بد MySQL روزی بود که دیتابیس سایت Zappos.com هک شد و نزدیک به 25 میلیون اکانت در اختیار هکرها قرار گرفت.

بیشتر...



انتقال یک یا چند مجموعه سایت به دیتابیس دیگر و یا وب اپلیکیشن دیگر

سلام به دوستان

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

Move-SPSite <http://ServerName/Sites/SiteName> -DestinationDatabase <DestinationContentDb>

 

که پارامتر اول نام مجموعه سایت و پارامتر دوم نام دیتابیسی که قصد انتقال به اون رو دارید هست.

برای انتقال چند مجموعه سایت به یک دیتابیس میتونید از دستور زیر هم استفاده کنید:

Get-SPSite -ContentDatabase <SourceContentDb> | Move-SPSite -DestinationDatabase <DestinationContentDb>

 

بخش اول دستور تمام مجموعه سایت هایی که داخل دیبتابیس <SourceContentDb> باشه رو برمیگردونه و به بخش دوم دستور پاس میده از اونجایی که پارامتر پیشفرض دستور Move-SPSite نام مجموعه سایت یا آبجکت SPSite هست به ازای هر مجموعه سایت اونها رو به دیتابیس <DestinationContentDb> منتقل میکنه.

با تمام توضیحات که دادم هنوز مشکل من حل نشده بود چون من میخواستم چند تا مجموعه سایت رو به یک وب اپلیکیشن (WebApplication) دیگه منتقل کنم.

اگه دستورات بالا رو برای این منظور استفاده کنید به خطای زیر بر میخورید :

 The site collection being moved and the destination content database must be within the same Web application.

 

این پیغام میگه که مجموعه سایت و دیتابیس مقصد باید در یک وب اپلیکیشن باشند!

بیشتر که تحقیق کردم مطلب مناسبی در این مورد پیدا نکردم. یاد صحبت یکی از دوستان (حمید جلالی) افتادم که میگفت بعضی مواقع علت اینکه پاسخ یه مسئله ای توی اینترنت پیداه نمیشه بیش از حد ساده بودن اون مsئله میتونه باشه!.

راه حلی که به ذهن من رسید این بود : 

بیشتر...

حذف تمام رکوردها از تمام جداول دیتابیس در SQL Server

در صورتی که بنا به دلایلی نیاز به حذف تمام اطلاعات موجود در تمام جداول یک دیتابیس در Sql sever پیدا کردید میتوانید بدون نیاز به اجرای T-Sql برروی هر جدول به صورت یکجا همه ی این رکوردها یا اطلاعات رو حذف کنید.

برای مثال این اسکریپت کاربردی زمانی به درد من خورد که میخواستم یه دیتابیس رو که در نسخه ی 2012 sql بود به 2008 بیارم برای همین مجبور شدم اسکریپت دیتابیس رو در نسخه ی 2012 به همراه دیتا با سازگاری 2008 تهیه کنم و در 2008 اجرا کنم که در زمان اجرای اسکریپت با کلی خطا مواجه شد که واقعا خطایابی اون کلی وقت نیاز داشت. برای همین چون من اسکریپت اولیه ی ایجاد دیتابیس رو به همراه داده های نمونه داشتم، اون رو روی 2008 اجرا کردم و بعد تمام اطلاعات نمونه ی این دیتابیس رو با کمک این دستورات حذف و سپس از تمام داده های موجود در دیتابیس 2012 اسکریپت گرفتم و اون رو با موفقیت توی 2008 اجرا کردم.

بدین منظور میتونید از کد t-sql زیر استفاده کنید. البته ابتدا انتخاب دیتابیس مورد نظر فراموش نشود:

EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable 'DELETE FROM ?'
GO
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO

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

مشکل intellisense در Sql Server 2008 R2

در صورتی که از Sql Server 2008 R2 استفاده میکنید و با مشکل عدم نمایش منوی هوشمند(Intellisense) حتی در صورت فعال بودن آن در منوی Query در زمان نوشتن کوئری مواجه شده اید. برای رفع این مشکل تنها راه قابل اطمینان و صددرصد نصب سرویس پک شماره ی یک و یا دو هست. در زیر لینک مستقیم دانلود سرویس پک ها با حجم حدود 350 مگ از سایت مایکروسافت قابل دانلود می باشد:

صفحه ی دانلود سرویس یک یک
صفحه ی دانلود سرویس پک شماره ی دو