سلام،
جناب یوسف من stored procedure اتان را مشاهده کردم. کار خوبی بود. چند نکته به نظرم رسید که میخوام به اطلاع شما برسانم. اگر نقد و بررسی بود در خدمتم.
مساله که وجود داره این هست که شما تمام سطرهای یک جدول را بروز رسانی می کنید یعنی حتی سطرهایی که نیاز به بروز رسانی ندارند را نیز بروز رسانی می کنید. فرض کنید 100 هزار داده داریم که فقط 1 هزار تای آنها نیاز به بروز رسانی دارند در اینجا ما 99 هزار سطر دیگر که لزومی به بروز رسانی نداشته اند را درگیر کردیم.
برای رفع این مساله بایستی WHERE را به دستور UPDATE اضافه کنیم چیزی شبیه به این:
select @x = 
' update [' + TblName + ']
set [' + ColName + '] = Replace( Replace( Replace([' + ColName + '], nchar(1603), nchar(1705)), nchar(1610), nchar(1740)), nchar(1609), nchar(1740))
where charindex(nchar(1603),[' + ColName + '])>0 or charindex(nchar(1610),[' + ColName + '])>0 or charindex(nchar(1609),[' + ColName + '])>0;

'
from


و سوالی که از شما دارم این است که دلیل خاصی دارد که شما update ها را دانه به دانه اجرا میکنید. مثلا چه error هایی پیش بینی کردین که ممکنه در حین اجرای update رخ دهد؟

پیشنهاد دیگری که دارم این هست که شما اگر به ازای هر جدول فقط یک دستور update داشتید بهتر بود. فرض کنید یک جدول دارای 5 فیلد از نوع رشته ای است طبق روال شما این جدول 5 دفعه بروز رسانی میشه اما میشه کاری کرد که فقط یکبار آن دستور اجرا می شد... البته امکان پیاده سازی این موضوع برمی گرده به سوال قبل.