sp_bindsession (Transact-SQL)
適用於:SQL Server
將會話系結或解除系結至相同 SQL Server 實例中的其他會話 資料庫引擎。 系結會話可讓兩個以上的會話參與相同的交易,並共用鎖定,直到 ROLLBACK TRANSACTION
發出 或 COMMIT TRANSACTION
為止。
重要
SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用多個作用中結果集 (MARS) 或分散式交易。 如需詳細資訊,請參閱 在 SQL Server Native Client 中使用多個作用中結果集 (MARS)。
語法
sp_bindsession { 'bind_token' | NULL }
引數
'bind_token'
識別原本使用 sp_getbindtoken
或 Open Data Services srv_getbindtoken
函式取得之交易的令牌。 bind_token是 varchar(255)。
傳回碼值
0
(成功) 或 1
(失敗)。
備註
系結的兩個會話只共用交易和鎖定。 每個會話都會保留自己的隔離等級,並在一個會話上設定新的隔離等級不會影響另一個會話的隔離等級。 每個會話都會由其安全性帳戶識別,而且只能存取帳戶獲授與許可權的資料庫資源。
sp_bindsession
使用系結令牌來系結兩個或多個現有的用戶端會話。 這些客戶端會話必須位於取得系結令牌的相同 資料庫引擎 實例上。 工作階段是執行命令的用戶端。 系結的資料庫會話會共用交易和鎖定空間。
從某個 資料庫引擎 實例取得的系結令牌,無法用於連線至另一個實例的用戶端會話,即使是 DTC 交易也是如此。 系結令牌只能在每個實例內於本機使用,而且無法在多個實例之間共用。 若要在另一個 資料庫引擎 實例上系結用戶端會話,您必須執行 sp_getbindtoken
來取得不同的系結令牌。
sp_bindsession
如果它使用未使用中的令牌,就會失敗併發生錯誤。
使用 sp_bindsession
而不指定bind_token或傳入NULL
bind_token,以解除會話的系結。
權限
需要 public 角色的成員資格。
範例
下列範例會將指定的系結令牌系結至目前的會話。
注意
範例中顯示的系結令牌是在執行 sp_bindsession
之前先執行 sp_getbindtoken
來取得。
USE master;
GO
EXEC sp_bindsession 'BP9---5---->KB?-V'<>1E:H-7U-]ANZ';
GO