2009-08-20 6 views
0

Que puis-je faire avec un type de données binaire dans SQL Server pour faciliter ma vie?Ajouter des données dans un type de données binaire SQL Server

J'ai récemment découvert cette fonctionnalité intéressante

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

Comment puis-je dans un magasin de données de manière efficace raisonnable qui fait un certain sens dans cette fente binaire? Oh, puis accéder à ces données d'une manière raisonnable?

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

Mise à jour: comme l'a souligné gbn

SELECT ? = CONTEXT_INFO() 

Une approche plus utile serait de compter sur CONTEXT_INFO() pour renvoyer un ID de ligne d'une certaine table de contexte. Dire:

SELECT * 
FROM ContextTable 
WHERE RowID = CONTEXT_INFO() 

Cela me permettrait d'interroger des informations de contexte.

Répondre

1

Il est utile pour transmettre des données dans un déclencheur, par exemple, le nom d'utilisateur de votre site Web dans un déclencheur d'audit.

J'utilise aussi CONTEXT_INFO() pour lire les données de retour sur (pour SQL Server 2005 et versions ultérieures)

Un Gotcha: il commence NULL, mais vous ne pouvez pas affecter NULL revenir après utilisation. Vous devez utiliser 0x00.

+0

Oui, c'est ce que je veux faire, mais le binaire n'est pas vraiment un type de travail, n'est-ce pas? Vous pouvez utiliser le @@ SPID pour gérer une table avec l'état (cette ligne peut être interrogée et c'est pratique). Btw, savez-vous si le CONTEXT_INFO() commence NULL pour chaque session, car cela aurait du sens? Merci pour le CONTEXT_INFO(), ne connaissait pas non plus celui-là. C'est génial. –

+0

oui, commence à NULL mais ne peut pas être réinitialisé. Je l'utilise uniquement pour les déclencheurs. – gbn

Questions connexes