پست‌ها

نمایش پست‌ها از 2012

ويژگيهاي جديد SQL Server 2012

تصویر
مدتي از انتشار نسخه 2012 ه SQL Server با كد نام Denali ميگذره در اين پست قصد دارم چنديدن ويژگي جديد اين نسخه رو معرفي كنم.ضمنا دريافت اين نسخه و تبديل اون به نسخه نهايي رو از اين پست ميتونيد پيگيري كنيد. AlwaysOn : يكي از مهمترين ويژگيها در SQL Server 2012 در بحث High Availability يا در دسترس بودن هست و در واقع تكميل كننده Database Mirroring در نسخه هاي قبلي ميباشد.در Mirroring ما به صورت تك تك ديتابيس هامون رو ميرور ميكنيم ولي در AlwaysOn اينكار به صورت گروهي انجام ميشه يعني چندين ديتابيس و همچنيا ميتونيم دو روش همزمان (Synchronous) و غير همزمان (Asynchronous) رو با هم تركيب كنيم.بر خلاف ميرورينگ ديتابيس ما به صورت فقط خواندني قابل كوئري گرفتنه و حتي بكاپ گرفتن. نكته:در نسخه هاي قبلي با گرفتن Snapshot از ديتابيس Mirror ميتوان به صورت فقط خواندني از ديتابيس استفاده كرد و … پشتيباني از Windows Server Core : يادمه دوره كارداني استاد شبكه اي داشتيم كه لينوكس رو بهمون به صورت Command ي درس ميداد كلي از دستش شاكي بوديم كه چرا GUI نه ... نسخه 2012 ي SQL Server قابل نصب ر

جلوگیری از حملات دستکاری آدرس در ASP.NET MVC‌

یکی از ویژگی های ASP.NET MVC نحوه آدرس دهی صفحات و منابع یا همون URL هست که تر و تمیزه و از سوی کاربر قابل فهمه یا به عبارتی SEO Friendly URLs ه.مثلا اگه شما Controller ی بنام Profile داشته باشید که یکی از Action Method های اون Index باشه موقع کار با این Controller آدرس های ارسالی به صورت زیر میشن. www.dotnetdev.info/Profile/2 همه چی آرومه! تا اینکه یه کاربر کنجکاو اون 2 ی آخر URl رو میکنه 3 و… اینجاس که وب سایت شما در مقابل «حمله دستکاری آدرس» یا URL Manipulation Attack یا Parameter Manipulation ضعف داره. و اماچه باید کرد؟ برای جلوگیری از این حمله روش های مختلفی موجود که بعضیاش شکننده و آماتور و بعضیاش حرفه ای ن و البته راه حل نهایی. همونطور که گفتم روش های متفاوتی موجوده که بر میگرده به سناریوی ما که مهمترینش وجود رابطه بین درخواست ارسالی از سمت کاربر و هویت اون کاربره مثلا تو مثال بالا حتما رابطه یک به یک بین پروفایل و کاربر موجوده و یا مثلا یک سیستم اتوماسیون اداری رو در نظر بگیرید بین درخواست های ایجاد شده در سیستم و کاربر رابطه موجوده.خب حالا این رابطه ها کجا

ساختن متدهاي كمكي Razor در ASP.NET MVC

تصویر
در نسخه 3 ي  ASP.NET MVC موتور نمايش(view-engine) جديدي بنام Razor اضافه شده ميزان كد نويسي View ها رو كم كرده. يكي از قابليت هاي جالب اون ساختن متدهاي كمكي به صورت اعلانيه(Declarative) كه اين امكان رو ميده در همون فايل View مون بتونيم متدهاي كمكي بسازيم كه ازش در سرتاسر اون View استفاده كنيم. براي مثال فرض كنيد جدولي داريم كه ستوني بنام قيمت(Price) داره حالا ميخواهيم اگه اون ستون كمتر از يك عددي بود اون ستون قرمز بشه و… براي نوشتن اين مثال از سري آموزشي MVC Music Store استفاده ميكنم.براي همين قسمت Model و Controllers رو نمينويسم. براي نوشتن متد كمكي از Helper@ استفاده ميكنم و بقيه مراحل دقيقا مثل نوشتن يك متد عاديه البته تنها فرقش با متد اينه كه بدنه ي متد فقط شامل كدهاي C#‎ نيست. @helper PriceHighlighter(decimal inputPrice, decimal treshold) { if (inputPrice > treshold) { <span style="background-color: red">@inputPrice</span> } else { @inputPrice } } همنطور ك

نکات شرینک کردن فایل های دیتابیس در SQL Server

تصویر
با ايده گرفتن از Arik Poznanski نتيجه گيريم رو از شرينك كردن فايل هاي ديتابيس اول مينويسم «شرينك كردن در صورت نياز» ما دو نوع شرينك كردن داريم شرينك كردن ديتا فايل (خيلي بد) شرينك كردن لاگ فايل (بد) يه سري مفاهيم اوليه در شرينك هست كه در هر دو نوع شرينك ثابته اول اين مفاهيم رو مرور كنيم. وقتي فايل هاي ديتابيس ميخوان بزرگ بشن بر اساس Autogrowth ي كه ست كرديد اون مقدار مورد نظر براي اطمينان از نداشتن بد سكتور بايد zero byte فرمت بشه حال فرض كنيد رشد بانك به صورت درصدي باشه (كه به صورت پيشفرض هست) و ديتابيس شما گيگا بايتي باشه چه حجم زيادي بايد zero byte فرمت بشه و اين يعني افت Performance. البته خبر خوب اينه كه عمل بزرگ شدن فايل از SQL Server 2005 به بعد فقط براي ديتا فايل با zero byte فرمت انجام نميشه ( Instant File Initialization ).همه اينا رو گفتم تا برسم به اينجا كه بزرگ شدن فايل يه عمليات زمانبريه پس اگه شما از نظر حجم Storage مشكلي نداريد تا جاي كه امكان داره فايلهاي ديتابيستون رو شرينك نكنيد. چرا شرينك كردن ديتا فايل خيلي بده! وقتي شما ديتا فايلتون رو

استفاده از Hotmail در SQL Server Database Mail

تصویر
نداشتن بكاپ در يك سازمان باعث فاجعه ميشه.اوايل گزينه مد نظرم براي چك كردن Job مربوط به بكاپ گرفتن استفاده از Notifications خود SQL Server و ارسال ايميل بود ولي يه مشكل كوچيك اين وسط بود نداشتن Mail Server در سازمان. تا قبل از اينكه اين مطلب رو بنويسم فكر ميكردم بايد حتما داخل سازمان خودمون Mail Server داشته باشيم.اين برداشت من داخل كلاس بود.اينم مدركش (به احتمال زياد من مطلب رو بد گرفته بودم!) با اين فكر غلط هروز صبح بايد اين كوئري رو اجرا ميكردم SELECT CAST(CONVERT(DATETIME , CAST(run_date AS CHAR(8)) , 101) AS CHAR(11)) AS 'Failure Date' , SUBSTRING(T2.name , 1 , 100) AS 'Job Name' , T1.step_id AS 'Step #' , T1.step_name AS 'Step Name' , T1.message AS 'Message' FROM msdb..sysjobhistory T1 JOIN msdb..sysjobs T2 ON T1.job_id = T2.job_id WHERE T1.run_status != 1 AND T1.step_id != 0 AND run_date >= CONVERT(CHAR(8) , ( SELECT