הפעלת סימון נתונים שהשתנו (CDC)

בדף הזה מוסבר איך להפעיל סימון נתונים שהשתנו (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_db
  • msdb.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 מופעל ויוצר באופן אוטומטי משימות תיעוד וניקוי עם פרמטרים שמוגדרים כברירת מחדל.