טעינת נתונים מ-Microsoft SQL Server ל-BigQuery

אפשר לטעון נתונים מ-Microsoft SQL Server ל-BigQuery באמצעות המחבר של שירות העברת הנתונים ל-BigQuery ל-Microsoft SQL Server. המחבר של Microsoft SQL Server תומך בטעינת נתונים ממופעי Microsoft SQL Server שמתארחים בסביבות מקומיות ובספקי ענן אחרים, כמו Cloud SQL,‏ Amazon Web Services ‏ (AWS) או Microsoft Azure. באמצעות שירות העברת הנתונים ל-BigQuery, אתם יכולים ליצור משימות להעברת נתונים לפי דרישה ומשימות להעברת נתונים חוזרות, כדי להעביר נתונים ממופע Microsoft SQL Server ל-BigQuery.

מגבלות

העברות נתונים של Microsoft SQL Server כפופות למגבלות הבאות:

  • יש מספר מוגבל של חיבורים בו-זמניים למסד נתונים של Microsoft SQL Server. לכן, גם מספר ההפעלות של העברות בו-זמניות למסד נתונים יחיד של Microsoft SQL Server מוגבל. מוודאים שמספר העבודות להעברה בו-זמנית קטן ממספר החיבורים המקסימלי בו-זמנית שנתמך על ידי מסד הנתונים של Microsoft SQL Server.
  • יכול להיות שסוגים מסוימים של נתונים ב-Microsoft SQL Server ימופו לסוג STRING ב-BigQuery כדי למנוע אובדן נתונים. לדוגמה, סוגים מסוימים של נתונים מספריים ב-Microsoft SQL Server שלא מוגדרים להם דיוק וקנה מידה עשויים להיות ממופים ל-STRING ב-BigQuery. מידע נוסף זמין במאמר בנושא מיפוי סוגי נתונים.

אפשרויות להטמעת נתונים

בקטע הבא מפורטות האפשרויות להטמעת נתונים כשמגדירים העברת נתונים מ-Microsoft SQL Server.

הגדרת TLS

מחבר Microsoft SQL Server תומך בהגדרה של אבטחה ברמת התעבורה (TLS) כדי להצפין את העברת הנתונים ל-BigQuery. מחבר Microsoft SQL Server תומך בהגדרות ה-TLS הבאות:

  • הצפנת נתונים ואימות של CA ושם מארח: במצב הזה מתבצע אימות מלא של השרת באמצעות TLS בפרוטוקול TCPS. הוא מצפין את כל הנתונים בזמן ההעברה ומוודא שהאישור של שרת מסד הנתונים נחתם על ידי רשות אישורים (CA) מהימנה. בנוסף, במצב הזה נבדק אם שם המארח שאליו מתחברים תואם בדיוק לשם הנפוץ (CN) או לשם חלופי של בעלים (subject) (SAN) באישור של השרת. המצב הזה מונע מהתוקפים להשתמש באישור תקף לדומיין אחר כדי להתחזות לשרת מסד הנתונים שלכם.
    • אם שם המארח לא תואם ל-CN או ל-SAN של האישור, החיבור נכשל. צריך להגדיר פתרון DNS שתואם לאישור או להשתמש במצב אבטחה אחר.
    • השתמשו במצב הזה כדי לקבל את האפשרות המאובטחת ביותר למניעת מתקפות מסוג 'אדם באמצע' (PITM).
  • הצפנת נתונים ואימות רשות האישורים בלבד: במצב הזה כל הנתונים מוצפנים באמצעות TLS בפרוטוקול TCPS, ומאומת שהאישור של השרת נחתם על ידי רשות אישורים שהלקוח סומך עליה. עם זאת, במצב הזה לא מתבצע אימות של שם המארח של השרת. החיבור במצב הזה יצליח כל עוד האישור תקף והונפק על ידי רשות אישורים מהימנה, בלי קשר לשאלה אם שם המארח באישור תואם לשם המארח שאליו מתחברים.
    • כדאי להשתמש במצב הזה אם רוצים לוודא שמתחברים לשרת שהאישור שלו חתום על ידי רשות מהימנה שמנפיקה אישורים (CA), אבל אי אפשר לאמת את שם המארח או שאין לכם שליטה על הגדרת שם המארח.
  • הצפנה בלבד: במצב הזה מוצפנים כל הנתונים שמועברים בין הלקוח לשרת. היא לא מבצעת אימות של אישורים או של שמות מארחים.
    • המצב הזה מספק רמת אבטחה מסוימת על ידי הגנה על נתונים במעבר, אבל הוא עלול להיות פגיע למתקפות PITM.
    • משתמשים במצב הזה אם רוצים לוודא שכל הנתונים מוצפנים, אבל לא יכולים או לא רוצים לאמת את זהות השרת. מומלץ להשתמש במצב הזה כשעובדים עם רשתות VPC פרטיות.
  • ללא הצפנה או אימות: במצב הזה לא מוצפנים נתונים ולא מתבצע אימות של אישורים או שמות מארחים. כל הנתונים נשלחים כטקסט רגיל.
    • לא מומלץ להשתמש במצב הזה בסביבה שבה מתבצע טיפול במידע אישי רגיש.
    • מומלץ להשתמש במצב הזה רק למטרות בדיקה ברשת מבודדת שבה האבטחה לא מהווה בעיה.

אישור שרת מהימן (PEM)

אם אתם משתמשים במצב הצפנת נתונים ואימות של רשות אישורים ושם מארח או במצב הצפנת נתונים ואימות של רשות אישורים, אתם יכולים לספק גם אישור אחד או יותר בקידוד PEM. האישורים האלה נדרשים בתרחישים מסוימים שבהם שירות העברת הנתונים ל-BigQuery צריך לאמת את הזהות של שרת מסד הנתונים במהלך חיבור ה-TLS:

  • אם אתם משתמשים באישור שחתום על ידי רשות אישורים פרטית בארגון שלכם או באישור עם חתימה עצמית, אתם צריכים לספק את שרשרת האישורים המלאה או את האישור היחיד עם החתימה העצמית. הדבר נדרש לאישורים שהונפקו על ידי רשויות אישורים פנימיות של שירותים מנוהלים של ספקי שירותי ענן, כמו Amazon Relational Database Service‏ (RDS).
  • אם האישור של שרת מסד הנתונים שלכם נחתם על ידי רשות אישורים ציבורית (למשל, Let's Encrypt,‏ DigiCert או GlobalSign), אתם לא צריכים לספק אישור. אישורי הבסיס של רשויות ה-CA הציבוריות האלה מותקנים מראש ומהימנים על שירות העברת הנתונים ל-BigQuery.

כשיוצרים הגדרת העברה של Microsoft SQL Server, אפשר לספק אישורים בקידוד PEM בשדה Trusted PEM Certificate (אישור PEM מהימן), עם הדרישות הבאות:

  • האישור צריך להיות שרשרת אישורים חוקית בקידוד PEM.
  • האישור חייב להיות נכון לחלוטין. אם יש אישורים חסרים בשרשרת או תוכן שגוי, חיבור ה-TLS ייכשל.
  • אם יש לכם אישור יחיד, אתם יכולים לספק אישור יחיד עם חתימה עצמית משרת מסד הנתונים.
  • כדי להשתמש בשרשרת אישורים מלאה שהונפקה על ידי רשות אישורים פרטית, צריך לספק את שרשרת האמון המלאה. הוא כולל את האישור משרת מסד הנתונים ואישורי ביניים ואישורי בסיס של רשות האישורים (CA).

לפני שמתחילים

כדי לתזמן העברת נתונים מ-Microsoft SQL Server, צריך לוודא שהתנאים המוקדמים הבאים מתקיימים.

דרישות מוקדמות ל-Microsoft SQL Server

צריך ליצור חשבון משתמש במסד הנתונים של Microsoft SQL Server. מידע נוסף זמין במאמר יצירת משתמש עם פרטי כניסה.

דרישות מוקדמות ל-BigQuery

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות ליצירת העברת נתונים מ-Microsoft SQL Server, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד BigQuery Admin (roles/bigquery.admin) בפרויקט. להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

זהו תפקיד מוגדר מראש עם ההרשאות שנדרשות ליצירת העברת נתונים של Microsoft SQL Server. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

כדי ליצור העברת נתונים מ-Microsoft SQL Server, צריך את ההרשאות הבאות:

  • bigquery.transfers.update
  • bigquery.datasets.get

יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

הגדרת רשת

אם אין כתובת IP ציבורית זמינה לחיבור למסד הנתונים של Microsoft SQL Server, צריך להגדיר תצורות רשת ספציפיות. מידע נוסף זמין בסעיפים הבאים:

הגדרת העברת נתונים של Microsoft SQL Server

בוחרים באחת מהאפשרויות הבאות:

המסוף

  1. עוברים לדף העברות נתונים.

    מעבר אל "העברות נתונים"

  2. לוחצים על Create transfer (יצירת העברה).

  3. בקטע Source type (סוג המקור), בשדה Source (מקור), בוחרים באפשרות Microsoft SQL Server (שרת Microsoft SQL).

  4. בקטע Data source details (פרטים של מקור הנתונים):

    • בקטע Network attachment (צירוף לרשת), בוחרים צירוף קיים לרשת או לוחצים על Create Network Attachment (יצירת צירוף לרשת).
    • בשדה מארח, מזינים את שם המארח או את כתובת ה-IP של מסד הנתונים של Microsoft SQL Server.
    • בשדה מספר יציאה, מזינים את מספר היציאה של מסד הנתונים של Microsoft SQL Server.
    • בשדה שם מסד הנתונים, מזינים את השם של מסד הנתונים של Microsoft SQL Server.
    • בשדה שם משתמש, מזינים את שם המשתמש של משתמש Microsoft SQL Server שמפעיל את החיבור למסד הנתונים של Microsoft SQL Server.
    • בקטע סיסמה, מזינים את הסיסמה של משתמש Microsoft SQL Server שיזם את החיבור למסד הנתונים של Microsoft SQL Server.
    • בתפריט מצב TLS, בוחרים באחת מהאפשרויות. מידע נוסף על מצבי TLS זמין במאמר בנושא הגדרת TLS.
    • בשדה Trusted PEM Certificate (אישור PEM מהימן), מזינים את האישור הציבורי של רשות האישורים (CA) שהנפיקה את אישור ה-TLS של שרת מסד הנתונים. מידע נוסף זמין במאמר אישור שרת מהימן (PEM).
    • בקטע Microsoft SQL Server objects to transfer (אובייקטים של Microsoft SQL Server להעברה), מעיינים בטבלה של Microsoft SQL Server או מזינים ידנית את שמות הטבלאות שנדרשות להעברה.
  5. בקטע הגדרות יעד, בשדה קבוצת נתונים, בוחרים את קבוצת הנתונים שיצרתם לאחסון הנתונים, או לוחצים על יצירת קבוצת נתונים חדשה ויוצרים קבוצת נתונים לשימוש כקבוצת נתוני היעד.

  6. בקטע שם הגדרת ההעברה, בשדה שם מוצג, מזינים שם להעברה. שם ההעברה יכול להיות כל ערך שיאפשר לכם לזהות את ההעברה אם תצטרכו לשנות אותה בהמשך.

  7. בקטע Schedule options:

    • בוחרים את תדירות החזרה. אם בוחרים באפשרות שעות, ימים (ברירת מחדל), שבועות או חודשים, צריך לציין גם תדירות. אפשר גם לבחור באפשרות בהתאמה אישית כדי ליצור תדירות חזרה ספציפית יותר. אם בוחרים באפשרות על פי דרישה, העברת הנתונים תתבצע רק כשמפעילים אותה באופן ידני.
    • אם רלוונטי, בוחרים באפשרות התחלה מיידית או באפשרות התחלה בשעה מוגדרת ומזינים תאריך התחלה ומשך זמן הפעלה.
  8. אופציונלי: בקטע אפשרויות התראות, מבצעים את הפעולות הבאות:

    • כדי להפעיל התראות באימייל, לוחצים על המתג התראות באימייל ומעבירים אותו למצב מופעל. כשמפעילים את האפשרות הזו, האדמין של ההעברה מקבל התראה באימייל כשהרצת ההעברה נכשלת.
    • כדי להגדיר התראות ב-Pub/Sub להעברה, לוחצים על המתג Pub/Sub notifications (התראות Pub/Sub) למצב מופעל. אפשר לבחור את שם הנושא או ללחוץ על יצירת נושא כדי ליצור נושא.
  9. אופציונלי: בקטע Advanced options, בוחרים סוג הצפנה להעברה הזו. אפשר לבחור מפתח של Google-owned and Google-managed encryption keyאו מפתח של Cloud Key Management Service בבעלות הלקוח. מידע נוסף על מפתחות הצפנה זמין במאמר מפתחות הצפנה בניהול הלקוח (CMEK).

  10. לוחצים על Save.

BQ

מזינים את הפקודה bq mk ומציינים את דגל יצירת ההעברה --transfer_config:

bq mk \
    --transfer_config \
    --project_id=PROJECT_ID \
    --data_source=DATA_SOURCE \
    --display_name=DISPLAY_NAME \
    --target_dataset=DATASET \
    --params='PARAMETERS'

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID (אופציונלי): מזהה הפרויקט ב- Google Cloud . אם לא מציינים פרויקט ספציפי באמצעות הדגל --project_id, נעשה שימוש בפרויקט שמוגדר כברירת מחדל.
  • DATA_SOURCE: מקור הנתונים, שהוא sqlserver.
  • DISPLAY_NAME: השם המוצג של הגדרת העברת הנתונים. שם ההעברה יכול להיות כל ערך שיעזור לכם לזהות את ההעברה אם תצטרכו לשנות אותה בהמשך.
  • DATASET: מערך הנתונים של היעד להגדרת העברת הנתונים.
  • PARAMETERS: הפרמטרים של הגדרת ההעברה שנוצרה בפורמט JSON. לדוגמה: --params='{"param":"param_value"}'. אלה הפרמטרים להעברה של Microsoft SQL Server:

    • connector.networkAttachment (אופציונלי): השם של קובץ הרשת המצורף שאליו רוצים להתחבר למסד הנתונים של Microsoft SQL Server.
    • connector.database: השם של מסד הנתונים של Microsoft SQL Server.
    • connector.endpoint.host: שם המארח או כתובת ה-IP של מסד הנתונים.
    • connector.endpoint.port: מספר היציאה של מסד הנתונים.
    • connector.authentication.username: שם המשתמש של המשתמש במסד הנתונים.
    • connector.authentication.password: הסיסמה של משתמש מסד הנתונים.
    • connector.tls.mode: מציינים תצורת TLS לשימוש בהעברה הזו:
      • ENCRYPT_VERIFY_CA_AND_HOST להצפנת נתונים ולאימות של CA ושם מארח
      • ENCRYPT_VERIFY_CA להצפנת נתונים ולאימות CA בלבד
      • ENCRYPT_VERIFY_NONE להצפנת נתונים בלבד
      • DISABLE ללא הצפנה או אימות
    • connector.tls.trustedServerCertificate: (אופציונלי) מציינים אישור אחד או יותר בקידוד PEM. חובה רק אם הערך של connector.tls.mode הוא ENCRYPT_VERIFY_CA_AND_HOST או ENCRYPT_VERIFY_CA.
    • assets: רשימה של שמות הטבלאות ב-Microsoft SQL Server שיועברו ממסד הנתונים של Microsoft SQL Server כחלק מההעברה.

לדוגמה, הפקודה הבאה יוצרת העברה של Microsoft SQL Server בשם My Transfer:

bq mk \
    --transfer_config
    --target_dataset=mydataset
    --data_source=sqlserver
    --display_name='My Transfer'
    --params='{"assets":["db1/dbo/Department","db1/dbo/Employees"],
        "connector.authentication.username": "User1",
        "connector.authentication.password":"ABC12345",
        "connector.database":"DB1",
        "connector.endpoint.host":"192.168.0.1",
        "connector.endpoint.port":"1520",
        "connector.networkAttachment":"projects/dev-project1/regions/us-central1/networkattachments/na1",
        "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST",
        "connector.tls.trustedServerCertificate": "PEM-encoded certificate"}'
כששומרים את הגדרת ההעברה, מחבר Microsoft SQL Server מפעיל באופן אוטומטי העברה בהתאם לאפשרות התזמון שהגדרתם. בכל הפעלה של העברה, המחבר של Microsoft SQL Server מעביר את כל הנתונים הזמינים מ-Microsoft SQL Server אל BigQuery.

כדי להפעיל העברת נתונים ידנית מחוץ ללוח הזמנים הרגיל, אפשר להתחיל הפעלה של מילוי חוסרים.

מיפוי סוגי נתונים

בטבלה הבאה מפורטים סוגי הנתונים ב-Microsoft SQL Server וסוגי הנתונים התואמים ב-BigQuery:

סוג נתונים של Microsoft SQL Server סוג נתונים ב-BigQuery
tinyint INTEGER
smallint INTEGER
int INTEGER
bigint BIGNUMERIC
bit BOOLEAN
decimal BIGNUMERIC
numeric NUMERIC
money BIGNUMERIC
smallmoney BIGNUMERIC
float FLOAT
real FLOAT
date DATE
time TIME
datetime2 TIMESTAMP
datetimeoffset TIMESTAMP
datetime TIMESTAMP
smalldatetime TIMESTAMP
char STRING
varchar STRING
text STRING
nchar STRING
nvarchar STRING
ntext STRING
binary BYTES
varbinary BYTES
image BYTES
geography STRING
geometry STRING
hierarchyid BYTES
rowversion BYTES
sql_variant BYTES
uniqueidentifier STRING
xml STRING
json STRING
vector STRING

סוגי הנתונים json ו-vector נתמכים רק ב-Azure.

סוג הנתונים JSON נתמך במסדי נתונים של Azure SQL ובמכונות מנוהלות של Azure SQL שהוגדרה בהן מדיניות עדכון שתמיד מעודכנת. סוג הנתונים JSON לא נתמך במופעים מנוהלים של Azure SQL שהוגדרו עם מדיניות העדכון של Microsoft SQL Server 2022.

‫Microsoft SQL Server מאחסן JSON כ-NVARCHAR(MAX) ולא כסוג JSON. מומלץ להשתמש ב-CHECK (ISJSON(json_col) = 1) לאימות וב-JSON_VALUE() לשאילתות.

ב-Microsoft SQL Server אין תמיכה בווקטורים עבור סוג הנתונים vector. מומלץ לאחסן וקטורים כמערכי JSON ב-NVARCHAR(MAX) ולהשתמש ב-JSON_VALUE() לחילוץ, עם חישובים ידניים של FLOAT לדמיון.

פתרון בעיות

כדי לפתור בעיות בהעברת הנתונים, אפשר לעיין במאמר בנושא בעיות בהעברה של Microsoft SQL Server.

תמחור

העברת נתונים מ-Microsoft SQL Server ל-BigQuery לא כרוכה בתשלום בזמן שהתכונה הזו נמצאת בגרסת Preview.

המאמרים הבאים

  • סקירה כללית של שירות העברת הנתונים ל-BigQuery זמינה במאמר מהו שירות העברת נתונים ל-BigQuery?.
  • מידע על שימוש בהעברות, כולל קבלת מידע על הגדרות העברה, הצגת רשימה של הגדרות העברה והצגת היסטוריית ההרצה של העברה, זמין במאמר ניהול העברות.