2009-08-20 78 views
0

如何在SQL Server中使用二進制數據類型來使我的生活更輕鬆?將東西裝入SQL Server二進制數據類型

我最近發現了這個漂亮的功能

DECLARE @p0 varbinary(128) 
SET @p0 = --? 
SET CONTEXT_INFO @p0 

我怎麼能在一個合理有效的方式存儲數據,這有一定的道理在這個二元插槽?噢,然後以某種合理的方式訪問這些數據?

SELECT ? = context_info 
FROM sys.dm_exec_sessions 
WHERE session_id = @@SPID 

更新:由GBN

SELECT ? = CONTEXT_INFO() 

指出一個更有用的方法是依靠CONTEXT_INFO()返回一些上下文表的行ID。說:

SELECT * 
FROM ContextTable 
WHERE RowID = CONTEXT_INFO() 

這將允許我查詢上下文信息。

回答

1

將數據傳遞到觸發器中會很有用,比如將用戶名從您的網站傳遞到審計觸發器。

我也想用CONTEXT_INFO()讀取數據回來了(對於SQL Server 2005及更高版本)

有一個問題:它開始NULL,但使用後不能分配NULL回去吧。你必須使用0x00。

+0

是的,這就是我的目標,但二進制並不是一個真正有用的類型,現在呢? 您可以使用@@ SPID來維護一個包含狀態的表格(您可以查詢的那一行,這很實用)。 順便說一句,你知道如果CONTEXT_INFO()爲每個會話開始NULL,因爲這會有道理嗎? 感謝CONTEXT_INFO(),不知道那個。這是很棒的東西。 – 2009-08-20 19:31:26

+0

是的,從NULL開始但不能重新設置。我只用它來觸發器。 – gbn 2009-08-21 04:18:28

相關問題