<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های محمد جواد خلیلی</title><link>https://virgool.ir/feed/@mjavadkhalili</link><description></description><language>fa</language><pubDate>2026-11-12 18:58:02</pubDate><image><url>https://files.virgool.ir/upload/users/31973/avatar/Wq1KZh.jpeg</url><title>محمد جواد خلیلی</title><link>https://virgool.ir/@mjavadkhalili</link></image><item><title>حل مشکل کرش کردن ویژوال استادیو با تغییر موقعیت پنجره ها در ویندوز 10</title><link>https://virgool.ir/@mjavadkhalili/حل-مشکل-کردن-ویژوال-استادیو-با-تغییر-موقعیت-پنجره-ها-در-ویندوز-10-zjelsnkpdlvq</link><description>متاسفانه یکی دوتا از آپدیت های ویندوز 10 یه مشکلی رو برای ویژوال استادیوی شما بوجود میاره اونم اینکه وقتی یکی از پنجره های داخلی این نرم افزار رو(مثلا toolbox) جابجا می کنید و dock میکنید ، ناگهان برنامه کرش میکنه و بسته میشه ، توی اینترنت بطور معمول راه حل حذف آپدیت ویندوز 10 ارائه شده که شاید برای خیلیا خوشایند نباشه ، من داخل استک یه راه حل ساده و خوب دیدم که اینجا با شما به اشتراک میذارماول:مطمئن بشید که ویژوال استادیو ی شما کاملا بسته هستدوم:وارد مسیر نصب ویژوال استادیو بشید که بطور خلاصه میشه:%InstallRoot%\Common7\IDEسوم:فایل devenv.exe.config رو پیدا کنید و در حالت ویرایش بازش کنید و کلمه AppContextSwitchOverrideرو داخلش پیدا کنید و داخل اتریبیوت value مقدار زیر رو در انتهاش قرار بدید:;Switch.System.Windows.Interop.MouseInput.OptOutOfMoveToChromedWindowFix=true;Switch.System.Windows.Interop.MouseInput.DoNotOptOutOfMoveToChromedWindowFix=trueچهارم:همین مرحله رو هم برای مسیر زیر برید:%LocalAppData%\Microsoft\VisualStudio\14.0_xxxویژوال رو باز کنید و میبینید که مشکل رفع شده و دیگه دردسر حذف آپدیت رو نخواهید داشت :)</description><category>محمد جواد خلیلی</category><author>محمد جواد خلیلی</author><pubDate>Sat, 10 Apr 2021 14:51:28 +0430</pubDate></item><item><title>ابزار کاملا رایگان برای مقایسه دو دیتابیس Sql server</title><link>https://virgool.ir/@mjavadkhalili/ابزار-کاملا-رایگان-برای-مقایسه-دو-دیتابیس-sql-server-l3yyklirkiyn</link><description>یه مثل هست میگه &#34;لقمه رو دور سرش میچرخونه!&#34; ، دقیقا مصداق یه سری از توسعه دهندگان sql server هست. وقتی من کارم اینه که فقط دوتا دیتابیس رو باهم مقایسه کنم و تفاوت هاش رو در بیارم(حالا چه تو مقوله دیتا و یا چه تو مقوله فانکشن و اس پی و ...)چه لزومی داره که از ابزار های غیر رایگان و سنگین(تر) مثل Apex یا Redgate استفاده بنمایم؟من با یه جستجو داخل گیتهاب به یه ابزار فوق العاده کاربردی به نام OpenDBDiff در این زمینه رسیدم ، که نحوه کارش رو در ادامه خدمتتون عرض میکنماول برای دوستانی که شاید تازه شروع کرده باشن یا تاحالا به این مسائل برنخورده باشن صورت مسئله رو تعریف کنم:فرض کنید شما یه دیتابیس داخل سیستم لوکال دارید و در حال توسعه اون هستید و یه نسخه دیتابیس هم در سرور نرم افزار زیر بار هست تغییرات زیادی هم دادید و قصد دارید که تغییرات جدید رو به دیتابیس سرور اصلی منتقل کنید ، راه حل چیه؟ اول: یا باید دونه دونه اس پی ها ، فانکشن ها ، جداول ، ویو ها و ... بررسی کنید و تغییرات جدید رو یکی یکی روی دیتابیس اصلی اعمال کنید که روی یک بانک اطلاعاتی در مقیاس بزرگ دیوانه کنندس! دوم: از ابزاری که کارش مقایسه دو بانک اطلاعاتی هست استفاده کنید و تغییرات رو بدست بیارید ، حالا اگه اون ابزار اسکریپت اعمال تغییرات رو هم دولوپی در اختیارتون بزاره که دیگه نوره علی نوره :)بریم سراغ آموزش:1- بعد از دانلود برنامه خیلی راحت و بدون نیاز به نصب اون رو اجرا می کنیدو با صفحه زیر روبرو می شید:نمایی از محیط برنامه2- در کادر سمت چپ نوشته Source database که باید اطلاعات ورود مربوط به دیتابیسی که توسعه رو روی اون انجام دادید وارد کنید و در کادر سمت نوشته Destination database که باید اطلاعات ورود مربوط به دیتابیسی که قراره تغییرات جدید روی اون بره رو وارد کنید.3- روی دکمه Compare کلیک کنید و تمام تغییرات نمایش داده میشهطبق توضیحی هم که خود ابزار قرار داده ، تغییر سبز یعنی یک نمونه جدید ایجاد شده ، تغییر آبی یعنی یک نمونه تغییر کرده و تغییر قرمز هم یعنی یک نمونه حذف شده و این تغییرات روی دیتابیسی اتفاق افتاده که در حال توسعه روی اون بودیدحالا خوبیه این ابزار اینه که اسکریپت اعمال تغییرات رو خودش میده و نیازی به ساخت اسکریپت نداریدفقط کافیه بعد از این که روی دکمه Compare کلیک کردید و تغییرات با رنگ های مشخص شده نمایش داده شد ، وارد تب Synchronized script بشید تا اسکریپت لازم برای اعمال تغییرات روی دیتابیس مقصد رو به دست بیاریدیه قابلیت خوب دیگه ای هم که این ابزار داره مشاهده و اعمال تغییرات روی دیتا هست!بزارید یه صورت مسئله دیگه خدمتتون تعریف کنم:فرض کنید روی یکی از جداول دیتابیس سرور اصلیتون حدود 1 میلیون رکورد تولید شده و قصد دارید ادامه توسعه رو در شرایط واقعی تر در دیتابیس لوکالتون انجام بدید پس به دیتاهای واقعی تری هم نیاز داریدیعنی دقیقا همین دیتاهایی که روی سرور اصلی هستخوب راه زیاد هست برای این که از دیتابیس سرور اصلی دیتا رو بیارید روی لوکال ، اما اگه از یه ابزاری مثل همین OpenDBDiff استفاده کنید متعجب میشید که چطور ممکنه یکار انقدر ساده انجام بشهحالا ادامه آموزش:بعد از اینکه اطلاعات ورود دو دیتابیس رو وارد کردید (دقت کنید اون دیتابیسی به عنوان دیتابیس منبع میشه که قراره رکورد ها رو ازش کپی بگیرید) و دکمه Comare رو زدید ، از سمت راست جدولی که قصد دارید از رکورد هاش کپی بگیرید رو انتخاب کنید و از سمت چپ روی دکمه Compare data کلیک کنید یه کادری مثل تصویر زیر باز میشهگزینه Merge all رو بزنید و بعدش Commit  و تمام!البته این ابزار یه سری تنظیمات برای مقایسه و خروجی ها داره که من خودم باهاش کارنکردم.امیدوارم توضیحاتم برای شما مفید واقع شده باشه.آدرس گیتهاب این ابزاراگه شما هم ابزار های کاربردی مثل این برنامه رو میشناسید ممنون میشم در کامنت ها معرفی کنید.</description><category>محمد جواد خلیلی</category><author>محمد جواد خلیلی</author><pubDate>Wed, 10 Mar 2021 03:32:37 +0330</pubDate></item><item><title>نحوه ارسال پارامتر به JSON_VALUE و JSON_QUERY</title><link>https://virgool.ir/@mjavadkhalili/نحوه-ارسال-پارامتر-به-jsonvalue-و-jsonquery-jrtoodneca65</link><description>فرض کنید حالتی در اسکیوال سرور(sql server) بوجود آمده که نیاز دارید مقدار فیلد های یک آبجکت(object) با ساختار جیسون(json) را بصورت داینامیک با ارسال پارامتر بخونید.مثل نمونه زیر:متغیر استرینگ شامل یک آبجکت جیسون  و متغییر استرینگ شامل عنوان یکی از فیلد های آبجکت: &#xA;declare @jsonData Varchar(100)=&#39;{&#34;username&#34;:&#34;admin&#34;,&#34;password&#34;:&#34;******&#34;}&#39;&#xA;declare @fieldName Varchar(100)=&#39;username&#39;اگه روی سیستمتون اس کیو ال 2017 به بالا دارید که خوشبحالتون!  براحتی با دستور پایین میتونید این کار رو انجام بدید:select JSON_VALUE(@jsonData,&#39;$.&#39;+@fieldName)خوب الان تکلیف کسی که ورژن پائین تره اس کیو ال رو استفاده میکنه چیه؟دوتا راه دارید:1- اس کیو ال 2017 یا ورژن بالاتر رو نصب کنید :)2- از روش داینامیک کوئری ها استفاده کنیدخوب اگه امکان نصب نسخه بالاتر رو ندارید یا خدای نکرده مثل من تنبلید و حال نصب یه نسخه جدید رو ندارید از کوئری داینامیک ها به شکل زیر میتونید استفاده کنید:declare @jsonData Varchar(100)=&#39;{&#34;username&#34;:&#34;admin&#34;,&#34;password&#34;:&#34;******&#34;}&#39;declare @fieldName varchar(max)=&#39;username&#39;declare @sql nvarchar(max)set @sql=&#39;select @field=JSON_VALUE(&#39;&#39;&#39;+@obj+&#39;&#39;&#39;, &#39;&#39;$.&#39;+@nameField+&#39;&#39;&#39;)&#39;;exec sp_executesql @sqlدر مثال بالا تنها کاری که کردیم این بود که همون دستور رو داخل یک متغیر استرینگ ریختیم و با اجرای اون بصورت sp_executesql خروجی رو مشاهده کردیمخوشبختانه خیلی هم سخت نبود :)در صورتی که بخواید خروجی این کوئری رو داخل یک متغیر دیگه بریزید ، می تونید از OUTPUT Parameter استفاده کنید:declare @field Varchar(max)&#xA;declare @jsonData Varchar(100)=&#39;{&#34;username&#34;:&#34;admin&#34;,&#34;password&#34;:&#34;******&#34;}&#39;declare @fieldName varchar(max)=&#39;username&#39;declare @sql nvarchar(max)set @sql=&#39;select @field=JSON_VALUE(&#39;&#39;&#39;+@obj+&#39;&#39;&#39;, &#39;&#39;$.&#39;+@nameField+&#39;&#39;&#39;)&#39;;&#xA;exec sp_executesql @sql,N&#39;@field varchar(max) OUTPUT&#39;,@field=@field OUTPUTتوی مثال بالا یک متغیر بنام field اضافه شد و  خروجی داینامیک کوئری رو داخل اون ریختیمالبته که یکم کار گره خورد!شمام اگه روش بهتر و یا راحت تری بلدید خوشحال میشم توی کامنت ها معرفی کنید</description><category>محمد جواد خلیلی</category><author>محمد جواد خلیلی</author><pubDate>Sat, 27 Feb 2021 08:55:55 +0330</pubDate></item></channel></rss>