שרתים מקושרים מאפשרים לכם לקרוא נתונים ולהריץ פקודות במסדי נתונים חיצוניים של SQL Server מ-Cloud SQL. אחרי שרושמים את המכונה, אפשר להגדיר חיבורים מוצפנים, למפות את פרטי הכניסה של המשתמשים ולהריץ שאילתות מבוזרות או קריאות לשירות מרוחק (RPC).
רישום המכונה כדי לאפשר שרתים מקושרים
כדי להוסיף את הדגל cloudsql enable linked servers למכונה, משתמשים בפקודה הבאה:
gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=on
מחליפים את INSTANCE_NAME בשם המכונה שבה רוצים להשתמש לקישור שרתים.
מידע נוסף זמין במאמר הגדרת דגלים לניהול מסד נתונים.
הוספת שרת מקושר
כדי להוסיף שרת מקושר, מריצים את הפקודה sp_addlinkedserver ב-Transact-SQL:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'MSOLEDBSQL', @datasrc=N'TARGET_SERVER_ID'
מחליפים את מה שכתוב בשדות הבאים:
- LINKED_SERVER_NAME בשם השרת המקושר שרוצים ליצור.
- TARGET_SERVER_ID עם שם הרשת, שם ה-DNS או כתובת ה-IP של השרת המקושר. בשם המכונה, משתמשים בפורמט
servername\instancename. אם המכונה משתמשת ביציאה לא סטנדרטית, מוסיפים את מספר היציאה. לדוגמה,servername\instancename, 8080.
כדי להוסיף מיפוי למשתמש שמחובר, מריצים את הפקודה הבאה:
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LINKED_SERVER_NAME', @useself=N'True'
מחליפים את LINKED_SERVER_NAME בשם של השרת המקושר.
כדי ליצור או לעדכן את פרטי ההתחברות והסיסמה המרוחקים שמוגדרים כברירת מחדל, ולהחיל אותם על כל פרטי ההתחברות המקומיים, מריצים את הפקודה הבאה:
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LINKED_SERVER_NAME', @useself=N'False', @locallogin=N'LOGIN', @rmtuser=N'USER_ID', @rmtpassword='PASSWORD';
מחליפים את מה שכתוב בשדות הבאים:
- LINKED_SERVER_NAME בשם של השרת המקושר.
- LOGIN עם פרטי ההתחברות לשרת המקומי.
localloginהוא sysname, עם ערך ברירת מחדל של NULL. הערך NULL מציין שהרשומה הזו חלה על כל ההתחברויות המקומיות שמתחברות אלrmtsrvname. אם הערך הוא לא NULL, localloginהוא פרטי כניסה לשרת SQL או ל-Windows. אם אתם משתמשים בפרטי כניסה ל-Windows, צריכה להיות להם גישה ל-SQL Server באופן ישיר או דרך החברות בקבוצת Windows שיש לה גישה. - USER_ID עם המשתמש שמבצע את ההתחברות.
- PASSWORD מחליפים בסיסמת המשתמש.
הוספת שרת מקושר עם חיבור מוצפן
כדי להוסיף שרת מקושר באמצעות חיבור מוצפן, מריצים את הפקודה sp_addlinkedserver ב-Transact-SQL:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'MSOLEDBSQL', @datasrc=N'TARGET_SERVER_ID, @provstr=N'Encrypt=yes;'
מחליפים את מה שכתוב בשדות הבאים:
- LINKED_SERVER_NAME בשם השרת המקושר שרוצים ליצור.
- TARGET_SERVER_ID בשם של שרת היעד, או בכתובת ה-IP ובמספר היציאה של שרת היעד.
אם שם השרת שונה מהשם שמופיע באישור, צריך לציין ששרת ה-SQL יכול לסמוך על אישור השרת. כדי לעדכן את מחרוזת הספק, מריצים את הפקודה הבאה:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'MSOLEDBSQL', @datasrc=N'TARGET_SERVER_ID, @provstr=N'Encrypt=yes;TrustServerCertificate=yes;'
מחליפים את מה שכתוב בשדות הבאים:
- LINKED_SERVER_NAME בשם השרת המקושר שרוצים ליצור.
- TARGET_SERVER_ID בשם של שרת היעד, או בכתובת ה-IP ובמספר היציאה של שרת היעד.
שאילתות בשרתים מקושרים
ב-Cloud SQL אפשר להשתמש בשמות בני ארבעה חלקים כדי לשלוח שאילתות לשרתים מקושרים (שם השרת, שם מסד הנתונים, שם הסכימה ושם האובייקט), בנוסף לפקודות הבאות:
מידע נוסף זמין במאמר השוואה בין אפשרויות להרצת שאילתות מרחוק.
הפעלת קריאות לשירות מרוחק (RPC) בשרת מקושר
קריאות לשירות מרוחק (RPC) מאפשרות להריץ תהליכים מאוחסנים בשרתים מקושרים. כדי להוסיף RPC, מריצים את הפקודה sp_serveroption ב-Transact-SQL עם ארגומנט RPC. יש שני ארגומנטים של RPC:
-
rpcמפעיל RPC מהשרת שצוין. - הערך
rpc outמפעיל RPC לשרת שצוין.
משתמשים בפקודה הבאה של sp_serveroption עם הארגומנט rpc כדי להפעיל RPC מ-LINKED_SERVER_NAME:
EXEC sp_serveroption @server='LINKED_SERVER_NAME', @optname='rpc', @optvalue='TRUE'
מחליפים את LINKED_SERVER_NAME בשם של השרת המקושר.
כדי להפעיל את RPC, משתמשים בפקודה sp_serveroption הבאה עם הארגומנט rpc out:
EXEC sp_serveroption @server='LINKED_SERVER_NAME', @optname='rpc out', @optvalue='TRUE'
מחליפים את LINKED_SERVER_NAME בשם של השרת המקושר.
הסרת מיפוי המשתמשים של שרת מקושר
כדי להסיר מיפוי משתמשים שהוספתם בעבר, מריצים את הפקודה הבאה:
EXEC master.dbo.sp_droplinkedsrvlogin @rmtsrvname=N'LINKED_SERVER_NAME', @locallogin=N'LOGIN';
מחליפים את מה שכתוב בשדות הבאים:
- LINKED_SERVER_NAME בשם השרת המקושר שרוצים להסיר.
- LOGIN עם פרטי ההתחברות לשרת המקומי.
localloginהוא sysname, עם ערך ברירת מחדל של NULL. הערך NULL מציין שהרשומה הזו חלה על כל ההתחברויות המקומיות שמתחברות אלrmtsrvname. אם הערך הוא לא NULL, localloginהוא פרטי כניסה לשרת SQL או ל-Windows. אם אתם משתמשים בפרטי כניסה ל-Windows, צריכה להיות להם גישה ל-SQL Server באופן ישיר או דרך החברות בקבוצת Windows שיש לה גישה.
הסרת מופע רשום מהרשימה של שרתים מקושרים מותרים
כדי להסיר שרתים מקושרים:
- מבטלים את הקישור לשרתים קיימים באמצעות הפרוצדורה המאוחסנת sp_dropserver ב-Transact-SQL.
כדי להסיר מכונה רשומה, מסירים את הדגל
cloudsql enable linked servers.gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=off
מחליפים את
INSTANCE_NAMEבשם המכונה שבה רוצים להסיר את השרתים המקושרים.לחלופין, אפשר להריץ את הפקודה הבאה כדי לנקות את כל הדגלים לניהול מסד הנתונים:
gcloud sql instances patch INSTANCE_NAME --clear-database-flags
מחליפים את
INSTANCE_NAMEבשם המכונה שבה רוצים להסיר את השרתים המקושרים.
פתרון בעיות
| שגיאה | פתרון בעיות |
|---|---|
Msg 7411, Level 16, State 1, Line 25
|
האפשרות DataAccess מושבתת. מריצים את הפקודה הבאה כדי להפעיל את הגישה לנתונים:EXEC sp_serveroption @server='LINKED_SERVER_NAME', @optname='data access', @optvalue='TRUE' מחליפים את LINKED_SERVER_NAME בשם של השרת המקושר. |
Access to the remote server is denied because no
login-mapping exists. (Microsoft SQL Server, Error: 7416)
|
אם הבעיה הזו מתרחשת בזמן שאתם יוצרים חיבור מוצפן, אתם צריכים לנסות דרך אחרת כדי לספק את מזהה המשתמש כשאתם ניגשים לשרת המקושר. כדי לעשות את זה, מריצים את הפקודה הבאה:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct= N'', @provider= N'MSOLEDBSQL', @datasrc= N'TARGET_SERVER_ID', @provstr= N'Encrypt=yes;TrustServerCertificate=yes;User ID=USER_ID' מחליפים את הערכים בשדות הבאים:
|
| התנהגות לא צפויה | אם אתם נתקלים בהתנהגות לא צפויה, ודאו שאתם משתמשים בספק נתמך. מידע נוסף זמין במאמרי העזרה של Microsoft. |