本頁說明如何管理 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 登入,則必須直接存取 SQL Server,或透過具有存取權的 Windows 群組成員資格存取。 - 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 登入,則必須直接存取 SQL Server,或透過具有存取權的 Windows 群組成員資格存取。
從允許連結伺服器的已註冊執行個體中移除執行個體
如要移除連結的伺服器,請按照下列步驟操作:
- 使用 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' 取代下列項目:
|
後續步驟
- 瞭解如何使用連結的伺服器。