sp_bindsession (Transact-SQL)

適用於:SQL Server

將會話系結或解除系結至相同 SQL Server 實例中的其他會話 資料庫引擎。 系結會話可讓兩個以上的會話參與相同的交易,並共用鎖定,直到 ROLLBACK TRANSACTION 發出 或 COMMIT TRANSACTION 為止。

重要

SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用多個作用中結果集 (MARS) 或分散式交易。 如需詳細資訊,請參閱 在 SQL Server Native Client 中使用多個作用中結果集 (MARS)。

Transact-SQL 語法慣例

語法

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或傳入NULLbind_token,以解除會話的系結。

權限

需要 public 角色的成員資格。

範例

下列範例會將指定的系結令牌系結至目前的會話。

注意

範例中顯示的系結令牌是在執行 sp_bindsession之前先執行 sp_getbindtoken 來取得。

USE master;
GO
EXEC sp_bindsession 'BP9---5---->KB?-V'<>1E:H-7U-]ANZ';
GO