ویرگول
ورودثبت نام
صابر طباطبائی یزدی
صابر طباطبائی یزدیبرنامه نویس۴۴ساله. از مدرک MCSD دات نت سال 2002 شروع کردم البته بعد از لیسانس و تمام عمرم رو در مدیریت با ابزار های شیرپوینت و MSPS و CRM و غیره گذراندم. https://zil.ink/sabert
صابر طباطبائی یزدی
صابر طباطبائی یزدی
خواندن ۲ دقیقه·۵ ماه پیش

بررسی اسکیوال سرور و اوراکل در جداول موقت و نسخه

System-Versioned Temporal Tables در SQL Server

این قابلیت در SQL Server (از نسخه 2016 به بعد) برای ردیابی خودکار تغییرات داده‌ها استفاده می‌شود. به زبان ساده، SQL Server یک «دفترچه تاریخچه» برای جدول شما نگه می‌دارد تا بتوانید هر لحظه به نسخه‌های قبلی داده‌ها برگردید.

ایجاد جدول نمونه

CREATE TABLE dbo.Temporal_Table_Demo ( [DempID] int NOT NULL PRIMARY KEY CLUSTERED, [DepName] nvarchar(100) NOT NULL, [DepLocation] varchar(100) NOT NULL, [NumOfEmp] int NOT NULL, [TimeStart] datetime2 (2) GENERATED ALWAYS AS ROW START, [TimeEnd] datetime2 (2) GENERATED ALWAYS AS ROW END, PERIOD FOR SYSTEM_TIME (TimeStart, TimeEnd) ) WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Temporal_Table_Demo_History));

گرفتن داده‌های تاریخی

-- نسخه داده‌ها در یک لحظه خاص SELECT * FROM dbo.Temporal_Table_Demo FOR SYSTEM_TIME AS OF '2025-08-01 12:00:00'; -- تغییرات بین دو تاریخ SELECT * FROM dbo.Temporal_Table_Demo FOR SYSTEM_TIME FROM '2025-08-01' TO '2025-08-05';

جایگزین در Oracle

Oracle دقیقاً قابلیتی به نام System-Versioned Temporal Tables ندارد، ولی می‌توان با ترکیب دو قابلیت زیر، همان نتیجه را گرفت:

  1. Flashback Data Archive (FDA) → برای ذخیره خودکار نسخه‌های قدیمی رکوردها

  2. Flashback Versions Query → برای پرس‌وجو و مشاهده نسخه‌های قدیمی

راه‌اندازی Flashback Data Archive

-- ایجاد Flashback Archive CREATE FLASHBACK ARCHIVE my_fda TABLESPACE my_tbs RETENTION 5 YEAR; -- فعال کردن روی جدول ALTER TABLE departments FLASHBACK ARCHIVE my_fda;

گرفتن داده‌های تاریخی در Oracle

-- نمایش نسخه‌های قبلی یک رکورد SELECT versions_starttime, versions_endtime, dep_name, dep_location FROM departments VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2025-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP('2025-08-05 23:59:59', 'YYYY-MM-DD HH24:MI:SS') WHERE dept_id = 10;

مقایسه ساده

ویژگی SQL Server Oracle (FDA + Versions Query) فعال‌سازی فقط یک دستور CREATE TABLE نیاز به ایجاد Archive و فعال‌سازی روی جدول نگهداری تاریخچه خودکار خودکار پس از فعال‌سازی FDA پرس‌وجو تاریخچه FOR SYSTEM_TIME VERSIONS BETWEEN سادگی پیاده‌سازی ساده‌تر کمی پیچیده‌تر قابلیت برگشت به نسخه قدیمی بله بله


اگر بخوای می‌تونم همین رو تبدیل به یک نسخه آموزشی اینفوگرافیک کنم که در یک نگاه تفاوت SQL Server و Oracle رو نشون بده. اینطوری هم برای گزارش و هم برای آموزش تیم استفاده میشه.

sql serverنرم افزار
۰
۰
صابر طباطبائی یزدی
صابر طباطبائی یزدی
برنامه نویس۴۴ساله. از مدرک MCSD دات نت سال 2002 شروع کردم البته بعد از لیسانس و تمام عمرم رو در مدیریت با ابزار های شیرپوینت و MSPS و CRM و غیره گذراندم. https://zil.ink/sabert
شاید از این پست‌ها خوشتان بیاید