בדף הזה מוסבר איך לנהל שרתים מקושרים במופע Cloud SQL, כולל רישום מופע, הוספת שרת מקושר וביצוע שאילתה בשרת מקושר.
רישום המופע כדי לאפשר שרתים מקושרים
כדי להוסיף את הדגל 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 Server או פרטי התחברות ל-Windows. אם אתם משתמשים בהתחברות ל-Windows, צריכה להיות לה גישה ל-SQL Server באופן ישיר, או דרך החברות שלה בקבוצת Windows שיש לה גישה. - USER_ID מחליפים במשתמש שמתחבר.
- PASSWORD מחליפים בסיסמה של המשתמש.
הוספת שרת מקושר עם חיבור מוצפן
כדי להוסיף שרת מקושר באמצעות חיבור מוצפן, מריצים את הפקודה Transact-SQL
sp_addlinkedserver:
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, מריצים את פקודת Transact-SQL sp_serveroption עם ארגומנט 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 בשם של השרת המקושר.
משתמשים בפקודה sp_serveroption הבאה עם הארגומנט rpc out כדי להפעיל את ה-RPC:
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 Server או פרטי התחברות ל-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. |