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