בדף הזה מוסבר איך להגדיר ולנהל מקורות נתונים חיצוניים לשימוש ב-PolyBase ובמופעים של Cloud SQL ל-SQL Server.
ניהול הגישה לאובייקטים חיצוניים
Cloud SQL תומך רק בפעולות להפעלה ולהשבתה של PolyBase. המשתמשים צריכים לנהל את ישויות SQL Server באופן ידני, באמצעות הצהרות T-SQL.
לפני שמנהלים את ישויות שרת ה-SQL באופן ידני, כדאי לעיין במקורות המידע הבאים של מיקרוסופט:
- יצירת מפתח ראשי באמצעות T-SQL
- הגדרת PolyBase לגישה לנתונים חיצוניים ב-Oracle
- הגדרת PolyBase כדי לגשת לנתונים חיצוניים באחסון אובייקטים שתואם ל-S3
יצירה של מקור נתונים חיצוני
בשלבים הבאים מוסבר איך ליצור מקור נתונים חיצוני למופע של Cloud SQL ל-SQL Server.
ב-SQL Server, מקור נתונים חיצוני מוגדר כמשאב עם פרטי חיבור כמו שם השרת, שם מסד הנתונים ומחרוזת החיבור.
ב-SQL Server, טבלאות חיצוניות מוגדרות כאובייקטים של מטא-נתונים בתוך SQL Server שמפנים לנתונים במקורות נתונים חיצוניים. הם מגדירים את הסכימה של הנתונים החיצוניים כפי שהיא תוצג ב-SQL Server.
כדי לבצע את התהליך הזה, צריך ליצור פרטי כניסה בהיקף מסד נתונים (DSC) למקור הנתונים החיצוני.
מקורות נתונים מחוברים (DSC) מאחסנים את פרטי האימות שנדרשים כדי להתחבר למקורות נתונים חיצוניים. פרטי הכניסה האלה מוצפנים באמצעות מפתח מאסטר של מסד הנתונים (DMK).
מפתח ה-DMK משמש כבסיס להיררכיית ההצפנה במסד נתונים, ומגן על סודות בהרשאות שמוגבלות למסד הנתונים. המפתח הסימטרי הזה מוצפן על ידי מפתח המאסטר של השירות (SMK) וסיסמה שהמשתמש מספק. מפתח ה-DMK לא נוצר באופן אוטומטי, והמשתמש צריך לנהל אותו באופן מפורש באמצעות T-SQL.
SMK משמש כבסיס להיררכיית ההצפנה של מופע ספציפי של SQL Server. המפתח הסימטרי הזה נוצר באופן אוטומטי על ידי SQL Server בפעם הראשונה שהוא מופעל, והוא משמש להגנה על אובייקטים אחרים של אבטחה, כמו DMK וסיסמאות כניסה.
Oracle
מבצעים את השלבים הבאים ב-SQL Server.
יצירת פרטי כניסה בהיקף מסד נתונים (DSC) עבור Oracle.
אם אין מפתח ראשי, עוברים למסד נתונים של משתמשים כדי ליצור מפתח ראשי:
USE USER_DB; CREATE MASTER KEY ENCRYPTION BY PASSWORD='MK_PASSWORD';מחליפים את מה שכתוב בשדות הבאים:
- USER_DB: מסד נתוני המשתמשים שבו רוצים להשתמש כדי ליצור את מפתח הראשי.
לדוגמה,
polybasedb. - MK_PASSWORD: הסיסמה של מפתח האב שרוצים להשתמש בו. חשוב לשמור את הסיסמה למפתח הראשי לשימוש בהמשך.
- USER_DB: מסד נתוני המשתמשים שבו רוצים להשתמש כדי ליצור את מפתח הראשי.
לדוגמה,
יוצרים פרטי כניסה בהיקף מסד הנתונים למקור הנתונים של Oracle.
CREATE DATABASE SCOPED CREDENTIAL DB_CREDENTIAL_NAME WITH IDENTITY = 'EXTERNAL_DATABASE_USERNAME', SECRET = 'EXTERNAL_DATABASE_PASSWORD';מחליפים את מה שכתוב בשדות הבאים:
- DB_CREDENTIAL_NAME: השם של פרטי הכניסה שרוצים להשתמש בהם עבור מסד הנתונים החיצוני.
- EXTERNAL_DATABASE_USERNAME: שם המשתמש שרוצים להשתמש בו כדי לגשת למסד הנתונים החיצוני.
- EXTERNAL_DATABASE_PASSWORD: הסיסמה למסד הנתונים החיצוני. כשמבצעים רוטציה של פרטי הכניסה למקור נתונים חיצוני, צריך לעדכן אותם, והניהול שלהם מתבצע באופן ידני על ידכם.
יוצרים מקור נתונים חיצוני ל-Oracle.
CREATE EXTERNAL DATA SOURCE DATA_SOURCE_NAME WITH ( LOCATION = 'oracle://SERVER_IP:PORT', PUSHDOWN = PUSHDOWN, CREDENTIAL = DB_CREDENTIAL_NAME );מחליפים את מה שכתוב בשדות הבאים:
- DATA_SOURCE_NAME: השם שרוצים להשתמש בו עבור מסד הנתונים החיצוני.
- SERVER_IP: כתובת ה-IP של השרת או שם המארח.
- PORT: היציאה שרוצים להשתמש בה.
- PUSHDOWN: שדה חובה. Pushdown
היא יכולת שמוצעת ב-SQL Server וצריך להגדיר אותה. מגדירים את הערך כ-
ONאו כ-OFF, בהתאם לתרחיש לדוגמה. - DB_CREDENTIAL_NAME: פרטי הכניסה שיצרתם.
יוצרים טבלה חיצונית.
הגדרת הסכימה והמבנה של הנתונים החיצוניים:
- יוצרים את הגדרת הטבלה החיצונית. הסכימה צריכה להיות זהה לטבלה המרוחקת.
- הגדרת עמודות עם סוגי נתונים והשוואות מתאימים של SQL Server.
- המיקום הוא הנתיב של הטבלה המרוחקת.
CREATE EXTERNAL TABLE EXTERNAL_TABLE_NAME( COLUMN_NAME_1 DATA_TYPE_1 COLLATE COLLATION_1, COLUMN_NAME_2 DATA_TYPE_2 COLLATE COLLATION_2, ... ) WITH( LOCATION = 'REMOTE_DATABASE.REMOTE_USERNAME.REMOTE_TABLE_NAME', DATA_SOURCE = DB_DATA_SOURCE_NAME );מחליפים את מה שכתוב בשדות הבאים:
- EXTERNAL_TABLE_NAME: השם של הטבלה החיצונית שרוצים ליצור.
- COLUMN_NAME_1: השם של העמודה הראשונה בטבלה.
- DATA_TYPE_1: סוג הנתונים בעמודה הראשונה.
- COLLATION_1: אוסף הכללים שרוצים להחיל על העמודה הראשונה.
- COLUMN_NAME_2: השם של העמודה השנייה בטבלה.
- DATA_TYPE_2: סוג הנתונים של העמודה השנייה.
- COLLATION_2: אוסף הכללים (collation) שרוצים להשתמש בהם בעמודה השנייה.
- REMOTE_DATABASE: השם של מסד הנתונים המרוחק.
- REMOTE_USERNAME: שם המשתמש של המשתמש המרוחק.
- REMOTE_TABLE_NAME: השם של הטבלה המרוחקת.
- DB_DATA_SOURCE_NAME: השם של מקור הנתונים החיצוני.
מריצים שאילתה על טבלת Oracle החיצונית שיצרתם.
SELECT TOP 10 * FROM EXTERNAL_TABLE_NAME;מחליפים את מה שכתוב בשדות הבאים:
- EXTERNAL_TABLE_NAME: השם של הטבלה החיצונית שרוצים לשלוח אליה שאילתה.
Cloud Storage
מבצעים את השלבים הבאים ב-SQL Server.
יוצרים פרטי כניסה בהיקף מסד הנתונים ל-Cloud Storage.
אם אין מפתח ראשי, עוברים למסד נתונים של משתמשים כדי ליצור מפתח ראשי:
USE USER_DB; CREATE MASTER KEY ENCRYPTION BY PASSWORD='MK_PASSWORD';מחליפים את מה שכתוב בשדות הבאים:
- USER_DB: מסד נתוני המשתמשים שבו רוצים להשתמש כדי ליצור את מפתח הראשי.
לדוגמה,
polybasedb. - MK_PASSWORD: הסיסמה שרוצים להשתמש בה בשביל מפתח האב. חשוב לשמור את הסיסמה למפתח הראשי לשימוש בהמשך.
- USER_DB: מסד נתוני המשתמשים שבו רוצים להשתמש כדי ליצור את מפתח הראשי.
לדוגמה,
ב-Cloud Storage נדרשים מזהה של מפתח גישה ומזהה של מפתח סודי:
CREATE DATABASE SCOPED CREDENTIAL STORAGE_CREDENTIAL_NAME WITH IDENTITY = 'S3 Access Key', SECRET = 'ACCESS_KEY_ID:SECRET_KEY_ID';מחליפים את מה שכתוב בשדות הבאים:
- STORAGE_CREDENTIAL_NAME: השם של פרטי הכניסה ל-Cloud Storage שרוצים להשתמש בהם.
- ACCESS_KEY_ID: מזהה מפתח הגישה.
- SECRET_KEY_ID: המזהה של המפתח הסודי.
יש תמיכה רק באימות בסיסי.
יוצרים מקור נתונים חיצוני.
CREATE EXTERNAL DATA SOURCE STORAGE_DATA_SOURCE_NAME WITH ( LOCATION = 's3://storage.googleapis.com/', CREDENTIAL = STORAGE_CREDENTIAL_NAME );מחליפים את מה שכתוב בשדות הבאים:
- STORAGE_DATA_SOURCE_NAME: השם של מקור הנתונים החיצוני ב-Cloud Storage.
- STORAGE_CREDENTIAL_NAME: השם של פרטי הכניסה למשאב האחסון החיצוני.
יוצרים טבלה חיצונית ל-Cloud Storage.
הגדרת הפורמט והמבנה של הנתונים החיצוניים:
- יוצרים את הקובץ החיצוני. הסכימה צריכה להתאים למבנה הקובץ.
- הגדרת עמודות עם סוגי נתונים והשוואות מתאימים של SQL Server.
- המיקום הוא הנתיב בתוך מקור הנתונים.
CREATE EXTERNAL FILE FORMAT FILE_FORMAT_NAME WITH ( FORMAT_TYPE = FORMAT_TYPE, FORMAT_OPTIONS ( FIELD_TERMINATOR = 'FIELD_TERMINATOR', STRING_DELIMITER = 'DELIMITER', FIRST_ROW = FIRST_ROW ) ); CREATE EXTERNAL TABLE FILE_EXTERNAL_TABLE_NAME ( COLUMN_NAME_1 DATA_TYPE_1, COLUMN_NAME_2 DATA_TYPE_2, ... ) WITH ( LOCATION = 'PATH_TO_BUCKET/FILENAME', DATA_SOURCE = STORAGE_DATA_SOURCE_NAME, FILE_FORMAT = FILE_FORMAT_NAME );מחליפים את מה שכתוב בשדות הבאים:
- FILE_FORMAT_NAME: השם של פורמט הקובץ החיצוני שרוצים ליצור.
- FORMAT_TYPE: סוג הפורמט שרוצים להשתמש בו, למשל
DELIMITEDTEXT. רשימת הערכים הנתמכים מופיעה במאמר פורמטים נתמכים של קבצים. - FIELD_TERMINATOR: התו שמפריד בין השדות שרוצים להשתמש בו.
- DELIMITER: התו שמגדיר את הגבולות של המחרוזת שרוצים להשתמש בה.
- FIRST_ROW: השורה שממנה רוצים להתחיל לקרוא.
- FILE_EXTERNAL_TABLE_NAME: השם של הטבלה החיצונית שרוצים ליצור.
- COLUMN_NAME_1: השם של העמודה הראשונה בטבלה.
- DATA_TYPE_1: סוג הנתונים בעמודה הראשונה.
- COLUMN_NAME_2: השם של העמודה השנייה בטבלה.
- DATA_TYPE_2: סוג הנתונים של העמודה השנייה.
- PATH_TO_BUCKET: הנתיב המלא לקטגוריה של Cloud Storage.
- FILENAME: שם הקובץ שנמצא בקטגוריה של Cloud Storage.
- STORAGE_DATA_SOURCE_NAME: השם של מקור הנתונים החיצוני ב-Cloud Storage.
- FILE_FORMAT_NAME: השם של פורמט הקובץ החיצוני.
שליחת שאילתה לטבלת Cloud Storage החיצונית שיצרתם.
SELECT * FROM FILE_EXTERNAL_TABLE_NAME;מחליפים את מה שכתוב בשדות הבאים:
- FILE_EXTERNAL_TABLE_NAME: השם של הטבלה החיצונית שרוצים לשלוח אליה שאילתה.
ניהול מפתח הראשי של מסד הנתונים אחרי פעולת שחזור של מסד נתונים
פרטי הכניסה בהיקף מסד הנתונים שמשמשים לגישה למקורות נתונים חיצוניים מוצפנים באמצעות מפתח מאסטר של מסד הנתונים (DMK).
מפתח ה-DMK מוצפן באמצעות מפתח המאסטר של השירות (SMK) של מופע המקור והסיסמה של מפתח ה-DMK שסופקה על ידי המשתמש. במופע המקור, SQL Server פותח את ה-DMK באופן שקוף באמצעות SMK.
אם משחזרים מופע של Cloud SQL ל-SQL Server, מפתח ה-DMK לא ייפתח אוטומטית במופע החדש בגלל שינויים במפתח ה-SMK.
לכן, קודם צריך לפענח את ה-DMK באמצעות סיסמת המשתמש שנקבעה במהלך היצירה שלו, ואז להצפין אותו מחדש באמצעות ה-SMK של מכונת היעד.
מידע נוסף זמין במקורות המידע הבאים של מיקרוסופט:
יומנים
יומני PolyBase הבאים זמינים בLogs Explorer:
Polybase_Dms_errors.logPolybase_Dms_movement.logPolybase_DWEngine_errors.logPolybase_DWEngine_movement.logPolybase_DWEngine_server.log
מידע נוסף זמין במאמרי העזרה של Microsoft בנושא פתרון בעיות ב-PolyBase.