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

בדף הזה מוסבר איך להפעיל לכידת נתונים משתנים (CDC) ב-Cloud SQL ל-SQL Server. התכונה הזו זמינה במסדי הנתונים של המופעים שלכם.

בעזרת CDC אפשר לתעד הרבה סוגים של שינויים. מידע על הפעלה והשבתה של CDC זמין במאמרי העזרה של מיקרוסופט.

אחרי התחברות למופע, 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 בטבלה

כדי להשבית את המעקב אחר שינויים בטבלה, משתמשים בפרוצדורה המאוחסנת 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 for SQL Server משאיר את הסימון KEEP_CDC מופעל ויוצר באופן אוטומטי משימות של לכידה וניקוי עם פרמטרים שמוגדרים כברירת מחדל.