c# ADO set context_info for SQL INSERT TRIGGER
c# ADO set context_info for SQL INSERT TRIGGER
我必须使用现有的 INSERT 触发器,它使用 CONTEXT_INFO...
如何将 "context_info" 传递给 c# SqlCommand 以便此触发器继续正常工作?
SQL-触发器中的用法:
select @ctxt=context_info from master.dbo.sysprocesses where spid = @@spid
set @session=substring(@ctxt,1,4)
set @contextid=substring(@ctxt,5,4)
set @ntduser=substring(@ctxt,9,120)
尝试过:
//string strContext = "declare @context_info varbinary(30) set @context_info = cast('abcdefghijklmnopqrstuv1234567890' as varbinary(30)) set context_info @context_info";
///////////////
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.UpdateCommand = cb.GetUpdateCommand();
//da.UpdateCommand.CommandText= da.UpdateCommand.CommandText.Replace(" WHERE ", strContext+" WHERE ");
//da.UpdateCommand.CommandText = "SET CONTEXT_INFO 0x1 " + da.UpdateCommand.CommandText;
da.Update(dataTable);
da.Dispose();
查看注释掉的代码...
在我的 SQL 触发器中 "context_info" 总是空的
那里没有 context_info 传递给 SqlCommand 或 SqlConnection 或 SqlTransaction 的示例吗?
我曾经使用过类似的东西(简化的)来设置一些信息(guid),以便可以从触发器内部检索...
string sql = $"DECLARE @session uniqueidentifier; SET @session = '{guid}'; SET CONTEXT_INFO @session";
var cmd = new SqlCommand(sql, connection, transaction);
cmd.ExecuteNonQuery();
确保不要关闭设置 context_info 和调用触发器之间的连接 ...
我必须使用现有的 INSERT 触发器,它使用 CONTEXT_INFO...
如何将 "context_info" 传递给 c# SqlCommand 以便此触发器继续正常工作?
SQL-触发器中的用法:
select @ctxt=context_info from master.dbo.sysprocesses where spid = @@spid
set @session=substring(@ctxt,1,4)
set @contextid=substring(@ctxt,5,4)
set @ntduser=substring(@ctxt,9,120)
尝试过:
//string strContext = "declare @context_info varbinary(30) set @context_info = cast('abcdefghijklmnopqrstuv1234567890' as varbinary(30)) set context_info @context_info";
///////////////
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.UpdateCommand = cb.GetUpdateCommand();
//da.UpdateCommand.CommandText= da.UpdateCommand.CommandText.Replace(" WHERE ", strContext+" WHERE ");
//da.UpdateCommand.CommandText = "SET CONTEXT_INFO 0x1 " + da.UpdateCommand.CommandText;
da.Update(dataTable);
da.Dispose();
查看注释掉的代码... 在我的 SQL 触发器中 "context_info" 总是空的
那里没有 context_info 传递给 SqlCommand 或 SqlConnection 或 SqlTransaction 的示例吗?
我曾经使用过类似的东西(简化的)来设置一些信息(guid),以便可以从触发器内部检索...
string sql = $"DECLARE @session uniqueidentifier; SET @session = '{guid}'; SET CONTEXT_INFO @session";
var cmd = new SqlCommand(sql, connection, transaction);
cmd.ExecuteNonQuery();
确保不要关闭设置 context_info 和调用触发器之间的连接 ...