本頁面說明如何管理 Cloud SQL 執行個體中的連結伺服器,包括註冊執行個體、新增連結伺服器,以及查詢連結伺服器。
註冊執行個體以允許連結的伺服器
如要在執行個體中新增 cloudsql enable linked servers
標記,請使用下列指令:
gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=on
將 INSTANCE_NAME
替換為您要用於連結伺服器的執行個體名稱。
詳情請參閱「設定資料庫標記」。
新增已連結的伺服器
如要新增已連結的伺服器,請執行 Transact-SQL sp_addlinkedserver
指令:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'SQLNCLI', @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 登入,則必須直接或透過具有存取權的 Windows 群組成員,才能存取 SQL Server。 - USER_ID 與登入的使用者。
- PASSWORD 與使用者密碼。
新增已加密連線的連結伺服器
如要使用加密連線新增已連結的伺服器,請執行 Transact-SQL sp_addlinkedserver
指令:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'TARGET_SERVER_ID, @provstr=N'Encrypt=yes;'
更改下列內容:
- LINKED_SERVER_NAME 與要建立的連結伺服器名稱。
- TARGET_SERVER_ID 搭配目標伺服器的名稱,或目標伺服器的 IP 位址和通訊埠號碼。
如果伺服器名稱與憑證中的名稱不同,您必須指出 SQL Server 可以信任伺服器憑證。如要更新提供者字串,請執行下列指令:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'TARGET_SERVER_ID, @provstr=N'Encrypt=yes;TrustServerCertificate=yes;'
更改下列內容:
- LINKED_SERVER_NAME 與要建立的連結伺服器名稱。
- TARGET_SERVER_ID 與目標伺服器的名稱,或目標伺服器的 IP 位址和通訊埠號碼。
已連結的伺服器查詢
除了下列指令外,Cloud SQL 也支援使用四部分名稱查詢已連結的伺服器 (伺服器名稱、資料庫名稱、結構描述名稱和物件名稱):
詳情請參閱「比較查詢遠端執行選項」。
在已連結的伺服器上啟用遠端程序呼叫
遠端程序呼叫 (RPC) 可讓您在已連結的伺服器上執行儲存程序。如要新增 RPC,請搭配 RPC 引數執行 Transact-SQL sp_serveroption
指令。有兩個 RPC 引數:
rpc
會啟用來自指定伺服器的 RPC。rpc out
可啟用對指定伺服器的 RPC。
使用下列 sp_serveroption
指令搭配 rpc
引數,即可啟用 LINKED_SERVER_NAME 的 RPC:
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 登入,則該登入帳戶必須直接或透過其在具有存取權的 Windows 群組中的成員資格,才能存取 SQL Server。
從允許連結的伺服器中移除已註冊的執行個體
如要移除已連結的伺服器,請按照下列步驟操作:
- 使用 Transact-SQL sp_dropserver 預存程序,刪除現有的已連結伺服器。
移除
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)
|
如果在建立加密連線時遇到這個問題,請嘗試在存取已連結的伺服器時,以其他方式提供使用者 ID。如要進行這項操作,請執行下列指令:EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct= N'', @provider= N'SQLNCLI', @datasrc= N'TARGET_SERVER_ID', @provstr= N'Encrypt=yes;TrustServerCertificate=yes;User ID=USER_ID' 替換下列內容:
|
後續步驟
- 瞭解如何使用已連結的伺服器。