共用方式為


sp_bindsession (Transact-SQL)

將工作階段繫結於相同 SQL Server Database Engine 執行個體中的其他工作階段,或解除其間的繫結。 繫結工作階段可讓兩個或更多工作階段參與相同的交易和共用鎖定,直到發出 ROLLBACK TRANSACTION 或 COMMIT TRANSACTION 為止。

重要事項重要事項

未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用 Multiple Active Result Set (MARS) 或分散式交易。 如需詳細資訊,請參閱<使用 Multiple Active Result Sets (MARS)>。

主題連結圖示 Transact-SQL 語法慣例

語法

sp_bindsession { 'bind_token' | NULL }

引數

  • ' bind_token '
    這是一個 Token,用來識別原本使用 sp_getbindtoken 或開放式資料服務 (Open Data Services) srv_getbindtoken 函數來取得的交易。 bind_token是 varchar(255)。

傳回碼值

0 (成功) 或 1 (失敗)

備註

繫結的兩個工作階段會共用交易和鎖定。 每個工作階段都會保留它自己的隔離等級,在一個工作階段上設定新的隔離等級,並不會影響另一工作階段的隔離等級。 每個工作階段都維持由它的安全性帳戶來識別,且只能存取帳戶已獲授權的資料庫資源。

sp_bindsession 利用繫結 Token 來繫結兩個或更多現有的用戶端工作階段。 這些用戶端工作階段必須在從中取得繫結 Token 的相同 Database Engine 執行個體中。 工作階段是一個執行命令的用戶端。 繫結的資料庫工作階段會共用交易和鎖定空間。

從某個 Database Engine 執行個體取得的繫結 Token,無法供連接到另一個執行個體的用戶端工作階段使用,即使是 DTC 交易也是如此。 繫結 Token 只在每個執行個體的本機環境內有效,不同的執行個體並不能共用它。 若要繫結另一 Database Engine 執行個體中的用戶端工作階段,您必須執行 sp_getbindtoken 來取得不同的繫結 Token。

如果 sp_bindsession 使用並非使用中的 Token,作業會失敗,且會出現錯誤。

請利用 sp_bindsession 且不指定 bind_token 或在 bind_token 中傳遞 NULL,來解除繫結工作階段。

權限

需要 public 角色中的成員資格。

範例

下列範例會將指定的繫結 Token 繫結到目前的工作階段。

[!附註]

範例中所顯示的繫結 Token,是在執行 sp_bindsession 之前執行 sp_getbindtoken 所取得的。

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

請參閱

參考

sp_getbindtoken (Transact-SQL)

srv_getbindtoken (擴充預存程序 API)

系統預存程序 (Transact-SQL)