PDA

View Full Version : Change Tracking



vahidmoonline
سه شنبه 23 آبان 1391, 12:59 عصر
با سلام Change Tracking در sql چیست و چه کاری انجام میدهد باتشکر

mehdi.mousavi
چهارشنبه 24 آبان 1391, 13:31 عصر
با سلام Change Tracking در sql چیست و چه کاری انجام میدهد باتشکر

سلام.
بطور خلاصه، Change Tracking مکانیزمی است که در اون Developer میتونه تغییرات بوجود اومده روی یک Table رو ردیابی کنه.
برای اینکار، ابتدا باید امکان Change Tracking رو روی جدول فعال کنید (http://msdn.microsoft.com/en-us/library/bb964713.aspx). سپس، هر تغییری روی Row های جدول، باعث میشه تا تغییرات
بطور خودکار ثبت بشه. شما میتونید به این اطلاعات از طریق توابع Change Tracking (http://msdn.microsoft.com/en-us/library/bb964727.aspx) دسترسی داشته باشید.

اطلاعات کامل در این زمینه رو می تونید در BOL مطالعه کنید (http://msdn.microsoft.com/en-us/library/bb933994.aspx).

موفق باشید.

vahidmoonline
پنج شنبه 25 آبان 1391, 17:19 عصر
ممنون از جواب شما میخواستم ببینم با این امکان می توان مثلا در برنامه در جای میخواهیم اطلاعاتی توسط کاربر وارد شود و عملیات CRUD روی آن اعمل گردد و بعد وقتی باتن ثبت نهایی را زد تازه بصورت داده اصلی ذخیر بشود و قبلی ها پاک شود یا خیر

حمیدرضاصادقیان
پنج شنبه 25 آبان 1391, 18:46 عصر
سلام.
برای اینکار میتوانید از راهکارهای دیگه مانند جداول Temp یا فایل XML استفاده کنید و بعد در نهایت داده های اونو به جداول اصلی ارسال کنید.
ولی من دلیل اینکارو متوجه نمیشم.
شما عمده تغییراتی که باید روی داده ها بدید باید روی لایه DAL باشه. نباید زیاد با SQL Server ارتباط داشته باشید که هم سرعت کار شما بیاد پایین هم کدهای تکراری دربرنامه زیاد بشه و...

esmit61
دوشنبه 29 آبان 1391, 11:14 صبح
شما عمده تغییراتی که باید روی داده ها بدید باید روی لایه DAL باشه. نباید زیاد با SQL Server ارتباط داشته باشید که هم سرعت کار شما بیاد پایین هم کدهای تکراری دربرنامه زیاد بشه و

جناب صادقیان لطفاً کمی بیشتر توضیح دهید. منظور از DAL چیست؟ لایه اپلیکیشن است ؟
ممنونم

حمیدرضاصادقیان
دوشنبه 29 آبان 1391, 13:21 عصر
منظور از DAL همون Data Access Layer هست که شما تبادلات اطلاعات با دیتابیس و Client رو در این لایه پیاده سازی میکنید.
برای اطلاعات بیشتر درمورد معماری چندلایه پیشنهاد میکنم اینجا (http://en.wikipedia.org/wiki/Multitier_architecture) رو ببینید.
همچنین در سایت نیز معماری چند لایه (N-tier) کاملا بحث شده که جستجو کنید به نتیجه خواهید رسید.

tooraj_azizi_1035
دوشنبه 29 آبان 1391, 13:32 عصر
Change tracking قابلیتی است که برنامه ها را قادر می کند تا نبست به تغییرات اعمال شده روی داده ها اطلاعاتی بدست آروند.
برنامه هایی که نیاز دارند تا با سرور خود را هماهنگ کنند دو دسته هستند: One Way و Two Way.

One-Way Synchronization Applications

95235

Two-Way Synchronization Applications

95236


Change tracking بعد از آنکه فعال شد اطلاعاتی نسبت به رکورد هایی که تغییر می کنند ثبت می کند.


توابع change tracking در SQL Server 2012:
http://msdn.microsoft.com/en-us/library/bb934145.aspx

مثال:
بدست آوردن اطلاعاتی در مورد آخرین تغییرات اعمال شده روی یک جدول:

-- -- Get all current rows with associated version
SELECT e.[Emp ID], e.SSN, e.FirstName, e.LastName,
c.SYS_CHANGE_VERSION, c.SYS_CHANGE_CONTEXT
FROM Employees AS e
CROSS APPLY CHANGETABLE
(VERSION Employees, ([Emp ID], SSN), (e.[Emp ID], e.SSN)) AS c;

vahidmoonline
جمعه 03 آذر 1391, 14:42 عصر
آقای حمیدرضاصادقیان پرسید چرا این کار را میکنید فرض کنید در برنامه داروخانه دارید یک نسخه وارد می کنید حال شخصی میگوید پول ندارد حال چرا بایست ذخیر شود اطلاع و عملیات crud در بانکی که دارای کلی اطلاعات درست است انجام شود من میخواهم عملیات جای دیگر انجام شود و در آخر ذخیر گردد یعنی بصورت یکجا حالا منظور من را فهمیدید . از جدول temp استفاده کردم اما ارتباطش با دات نت بر قرار نمشود برای crud آیا شما sample ای با دات نت دارید که از طریق temp باشد سپاسگزارم

حمیدرضاصادقیان
دوشنبه 06 آذر 1391, 08:20 صبح
خوب با این اوصاف اصلا CDC به درد کار شما نمیخوره. شما باید مقداری روی معماری نرم افزار تغییر ایجاد کنید.
یا اینکه میتونید به صورت XML داده هارو ارسال کنید و ذخیره کنید. یا اینکه یک SP بنویسید و از Table Valued Parameters استفاده کنید و داده ها رو به صورت یک جدول به اون ارسال کنید و قبل از ارسال داده ها نیز صحت اونو کنترل کنید که اگر درست بود اونو به SP ارسال کنید.
اصلا سمت استفاده از Temp Table ها نرید و با Table Valued Parameters ها کار کنید.