בדף הזה מוסבר איך להפעיל סימון נתונים שהשתנו (CDC) ב-Cloud SQL ל-SQL Server. התכונה הזו זמינה למסדי הנתונים של המכונות שלכם.
באמצעות CDC אפשר לתעד סוגים רבים של שינויים. למידע על הפעלה והשבתה של CDC, קראו את המסמכים של Microsoft.
אחרי התחברות למכונה, המשתמש ב-sqlserver יכול לבצע הרבה פעולות CDC.
לפני שמתחילים
לפני שמטמיעים CDC במכונה, חשוב לקרוא את כל המידע שבדף הזה.
איך בודקים אם התכונה זמינה
אפשר להשתמש ב-CDC בגרסאות הבאות של מסדי נתונים ב-Cloud SQL ל-SQL Server:
- SQL Server 2022 Standard
- SQL Server 2022 Enterprise
- SQL Server 2019 Standard
- SQL Server 2019 Enterprise
- SQL Server 2017 Standard
- SQL Server 2017 Enterprise
הפעלת CDC והתחלת משימות תיעוד של CDC
במסד הנתונים שלך יש את הפרוצדורות המאוחסנות הבאות, לשימוש על ידי המשתמש sqlserver:
msdb.dbo.gcloudsql_cdc_enable_dbmsdb.dbo.gcloudsql_cdc_disable_db
הפעלת CDC
כדי להפעיל את התכונה הזו במסד נתונים, מריצים את הפרוצדורה המאוחסנת הנדרשת ומעבירים את שם מסד הנתונים. לדוגמה:
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'DATABASE_NAME'
השבתת CDC
כדי להשבית את התכונה הזו במסד נתונים, מריצים פקודה כמו זו:
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME'
התחלת משימות תיעוד של CDC
אחרי שמפעילים את CDC, נוצרות משימות לתיעוד ולניקוי. המשתמש sqlserver לא יכול לראות את המשימות ב-SQL Server Management Studio (SSMS).
עם זאת, אתם יכולים לשנות את המשימות באמצעות פרוצדורות מובנות מאוחסנות. בנוסף, אפשר לראות את המשימות באמצעות התהליך המאוחסן הבא:
כדי להתחיל משימת ניקוי, אפשר להשתמש בפקודה הבאה:
EXEC sys.sp_cdc_start_job @job_type = N'cleanup'
כדי לשנות את הפרמטרים של המשימה, אפשר להשתמש בפקודה דומה לזו, לדוגמה:
EXEC sys.sp_cdc_change_job @job_type = N'capture',
@maxtrans = 20,
@pollinginterval = NULL,
@maxscans = NULL,
@continuous = NULL
למידע נוסף על התחלה ושינוי של משימות, ראו:
אפשר גם לעיין במאמר sys.sp_cdc_add_job.
הפעלת CDC בטבלה
אחרי שמפעילים את CDC במסד נתונים, כל משתמש עם גישת dbo (בעלים של מסד נתונים) יכול להגדיר מעקב אחרי טבלאות במסד הנתונים.
למידע על הפקודות והאפשרויות הרגילות של CDC, קראו את המאמר הפעלה והשבתה של סימון נתונים שהשתנו.
מעקב אחרי שינויים בטבלה
כדי לעקוב אחרי טבלה, משתמשים בפרוצדורה המאוחסנת sys.sp_cdc_enable_table.
לדוגמה, אפשר לציין פקודה כמו זו:
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'customer',
@role_name = N'CDC'
איך בודקים אם ה-CDC מופעל בטבלה
כדי לבדוק אם CDC מופעל בטבלה, משתמשים בפרוצדורה המאוחסנת sys.sp_cdc_help_change_data_capture.
לדוגמה, אפשר לציין פקודה כמו זו:
EXECUTE sys.sp_cdc_help_change_data_capture
@source_schema = N'dbo',
@source_name = N'customer'
הרצת שאילתות על שינויים באמצעות טבלת שינויים של CDC
כדי לראות את השינויים שבוצעו בטבלה באמצעות CDC, משתמשים בשאילתת SELECT בטבלה שנוצרת באופן אוטומטי כשמפעילים את CDC באותה טבלה.
הטבלה נקראת כך:
<schema>_<table_name>_CT
לדוגמה, אפשר לציין פקודה כמו זו:
SELECT * FROM cdc.dbo_customer_CT
הפעלת CDC בטבלה עם מופע תיעוד שצוין
כדי לעקוב אחרי טבלה באמצעות "מופע תיעוד", משתמשים בפרוצדורה המאוחסנת sys.sp_cdc_enable_table.
לדוגמה, אפשר לציין פקודה כמו זו:
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name = N'customer',
@role_name = N'CDC',
@capture_instance = N'customer_cdc',
@supports_net_changes = 1
שאילתה על כל השינויים במופע תיעוד
כדי לראות את השינויים ב-CDC שבוצעו בטבלה בתוך "מופע תיעוד", משתמשים בפרוצדורה המאוחסנת cdc.fn_cdc_get_all_changes_<capture_instance>.
לדוגמה, אפשר לציין הצהרת SQL כמו זו:
DECLARE @from_lsn binary(10), @to_lsn binary(10)
SET @from_lsn = sys.fn_cdc_get_min_lsn(N'customer_cdc')
SET @to_lsn = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_all_changes_customer_cdc(@from_lsn, @to_lsn, N'all');
השבתת CDC בטבלה
כדי להשבית את המעקב אחרי CDC בטבלה, משתמשים בפרוצדורה המאוחסנת sys.sp_cdc_disable_table. צריך לציין מופע של תיעוד כדי להשבית אותו. אפשר גם לציין מופע של תיעוד בתור 'all'.
לדוגמה, אפשר לציין פקודה דומה לפקודה הבאה כדי להשבית את ה-CDC בטבלה:
EXEC sys.sp_cdc_disable_table
@source_schema = N'dbo',
@source_name = N'customer',
@capture_instance = N'all'
מחיקת מסד נתונים שמופעל בו CDC
אם CDC מופעל במסד נתונים ואתם מנסים למחוק אותו, יכול להיות שתקבלו שגיאות. במקרה כזה, משביתים את ה-CDC במסד הנתונים ואז מוחקים את מסד הנתונים.
לדוגמה, אפשר להזין פקודה דומה לפקודה הבאה כדי להשבית ולמחוק מסד נתונים:
EXEC msdb.dbo.gcloudsql_cdc_disable_db 'DATABASE_NAME' DROP DATABASE 'DATABASE_NAME'
אם אי אפשר למחוק את מסד הנתונים כי יש לו חיבורים פתוחים, משתמשים בשאילתה הבאה כדי לראות את החיבורים האלה:
select db_name(dbid),* from sys.sysprocesses where db_name(dbid)= 'DATABASE_NAME'
סוגרים את כל החיבורים הפתוחים. משביתים את ה-CDC במסד הנתונים ומוחקים את מסד הנתונים.
ייבוא מסד נתונים עם CDC מופעל
כשמייבאים מסד נתונים עם CDC מופעל, Cloud SQL ל-SQL Server משאיר את הדגל KEEP_CDC מופעל ויוצר באופן אוטומטי משימות תיעוד וניקוי עם פרמטרים שמוגדרים כברירת מחדל.