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