c # ADO установить context_info для SQL INSERT TRIGGER - PullRequest
0 голосов
/ 07 июня 2018

Мне нужно использовать существующий триггер INSERT, который использует CONTEXT_INFO ...

Как передать "context_info" в ac # 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" всегда был пустым

Уже прочитал это: https://social.msdn.microsoft.com/Forums/en-US/4a0ecb28-11cb-45ec-adbd-d72ac65b158a/how-to-pass-net-applications-parameter-to-a-trigger?forum=transactsql, но также не работает.

Нет ли там примера, где context_info передается в SqlCommand или SqlConnection или SqlTransaction?

1 Ответ

0 голосов
/ 11 июня 2018

Я использовал что-то подобное (упрощенное) один раз, чтобы установить некоторую информацию (guid), чтобы ее можно было извлечь из триггера ...

string sql = $"DECLARE @session uniqueidentifier; SET @session = '{guid}'; SET CONTEXT_INFO @session";
var cmd = new SqlCommand(sql, connection, transaction);
cmd.ExecuteNonQuery();

Не закрывайте связь между настройкамиcontext_info и вызов триггера ...

...