Недавно мы преобразовали нашу систему JD Edwards EnterpriseOne и платформу AS400/DB2 в Windows & SQL Server. В старой системе у нас была программа RPG/CL, которая передавала данные из библиотеки AS400 в систему учета для дальнейшей обработки. Конечным пользователям необходимо было инициировать этот процесс, чтобы он выполнялся с помощью команды меню.Улучшение производительности передачи данных AS400/SQL Server 2008 R2
Чтобы воспроизвести это поведение после преобразования, я создал хранимую процедуру в SQL Server 2008 R2, которая вставляет записи в базу данных SQL Server из as400 через связанный сервер, а затем обновляет записи на as400, чтобы указать, что записи были обработаны. Чтобы позволить конечным пользователям возможность выполнить этот процесс, я создал отчет SSRS (2005), который выполняет хранимую процедуру.
Когда отчет SSRS выполняется в интерактивном режиме, мы периодически получаем сообщение об ошибке «Для обеспечения безопасности DTD в этом документе XML запрещен», что из-за моего исследования вызвано нехваткой памяти SSRS.
Кто-нибудь знает о другом/лучшем способе передачи данных?
Передача/обновление хранимых процедур по существу
INSERT INTO [SQL DEST TABLE]
SELECT *
FROM [AS400 Linked Server/Table]
UPDATE OPENQUERY (AS400_LINK, 'MY SELECT QUERY')
SET FLAG = PROCESSED;
Отчет SSRS выглядит как действительно странное место, чтобы поместить логику для обновления вашей базы данных! Я бы использовал либо пакет служб SQL Server Integration Services (SSIS), либо даже SQL-агент, выполняющий некоторые основные инструкции T-SQL по желанию пользователя. –
SSRS был взломан, SSIS был моим первым выбором. Как еще я могу, чтобы конечные пользователи выполняли пакет SSIS без прямого доступа? –
Вы должны иметь возможность хранить пакет SSIS на сервере, запланировать его в задании агента SQL Server, и такое задание может быть выполнено, например. веб-сайт ASP.NET или что-то в этом роде. –