Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Server 2000 Ошибка триггера при добавлении записей в другую таблицу  [new]
koklobok
Member

Откуда:
Сообщений: 2
Имеем 1С:Предприятие 7.7 + MS SQL SERVER 2000. Требуется сделать логгирование изменений: в отдельную таблицу кидать измененные записи из разных таблиц. Таблица предполагатся использовать для обмена с другими системами, чтобы перекидывать только измененные данные. Создал таблицу

CREATE TABLE [dbo].[_ExchangePlan] (
	[DBSIGN] [char] (3) 
	[TYPEID] [int] ,
	[OBJID] [char] (9) 
) ON [PRIMARY]
GO


где DBSIGN - имя внешней базы, TYPEID - тип объекта 1С, OBJID - ключевое поле объекта 1С из его таблицы

для тестирования сделал триггер на одну из таблиц

CREATE TRIGGER [_tr_tmc_upd] ON [dbo].[SC33] 
FOR INSERT, UPDATE 
AS

IF NOT EXISTS (SELECT * FROM INSERTED) RETURN;

INSERT INTO _ExchangePlan  (DBSIGN, TYPEID, OBJID)  
SELECT 'UPP', 34, ID from inserted
;


При выполнении тригера получаю ошибку Connection is busy with results for another hstm.

Гугл говорит мне про MARS которого в 2000 нет, кроме того насколько понимаю это свойство подключения к которому я не имею доступа. Вопрос в том как все таки решить задачу добавления обновляемых записей в отдельную таблицу, возможно я неправильно создал саму таблицу?
14 май 13, 11:28    [14291360]     Ответить | Цитировать Сообщить модератору
 Re: Server 2000 Ошибка триггера при добавлении записей в другую таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
koklobok
При выполнении тригера

О, и какая команда "выполнения триггера" ?

koklobok
Гугл говорит мне про MARS которого в 2000 нет, кроме того насколько понимаю это свойство подключения к которому я не имею доступа.

Наверное надо использовать правильные методы в вашем приложении ?
14 май 13, 11:33    [14291402]     Ответить | Цитировать Сообщить модератору
 Re: Server 2000 Ошибка триггера при добавлении записей в другую таблицу  [new]
invm
Member

Откуда: Москва
Сообщений: 9633
CREATE TRIGGER [_tr_tmc_upd] ON [dbo].[SC33] 
FOR INSERT, UPDATE 
AS
SET NOCOUNT ON

IF NOT EXISTS (SELECT * FROM INSERTED) RETURN;

INSERT INTO _ExchangePlan  (DBSIGN, TYPEID, OBJID)  
SELECT 'UPP', 34, ID from inserted
;
14 май 13, 11:34    [14291413]     Ответить | Цитировать Сообщить модератору
 Re: Server 2000 Ошибка триггера при добавлении записей в другую таблицу  [new]
koklobok
Member

Откуда:
Сообщений: 2
Glory
О, и какая команда "выполнения триггера" ?


Спасибо за ликбез.

Glory
Наверное надо использовать правильные методы в вашем приложении ?


К сожалению в 1С 7.7 нет возможности глобально следить за изменениями в таблицах данных, то есть чтобы отслеживать изменения нужно знать все места где эти изменения произошли, а это и сама конфигурация и всевозможные внешние обработки. В 1С 8.х с этим проблем нет.

2 invm
Большое спасибо, помогло.
14 май 13, 12:05    [14291719]     Ответить | Цитировать Сообщить модератору
 Re: Server 2000 Ошибка триггера при добавлении записей в другую таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
koklobok
К сожалению в 1С 7.7 нет возможности глобально следить за изменениями в таблицах данных, то есть чтобы отслеживать изменения нужно знать все места где эти изменения произошли, а это и сама конфигурация и всевозможные внешние обработки. В 1С 8.х с этим проблем нет.

Правильно надо клиентский код писать.
Если вам не нужны возвращаемые сервером результаты, то используйте методы, которые их игнорируют.
Потому что, пока результат не прочитан, Connection is busy with results for another hstm.
14 май 13, 12:08    [14291746]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить