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)>。 |
適用於:SQL Server (SQL Server 2008 至目前版本)。 |
語法
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