Адаптер таблицы против SqlPipe (особый случай)C#

Место общения программистов C#
Ответить
Anonymous
 Адаптер таблицы против SqlPipe (особый случай)

Сообщение Anonymous »

Эти вопросы предназначены для опытных специалистов и возникают из следующей (упрощенной) ситуации: предположим, что происходит выход из MSSQL Server1, на котором завершается База данных (это em>database1 не нормализована), что затруднит ее использование для различных целей, таких как внешние клиенты (инструменты для визуализации, другие программы и т. д.), и ее нельзя будет изменить (из много причин). Чтобы иметь возможность эффективно использовать других клиентов на другом сервере, необходимо использовать еще один MSSQL Server2, где базы данных оптимизируются, а данные с Сервер1 изменяются и вставляются в Сервер2. >.
В качестве примера из MSSQL ,Server1, databse1, TableA вставьте данные в MSSQL, Server2 , dabase2, TableB и ТаблицаC. это можно сделать через T-SQL (триггеры, процедуры и т.д.).
Но в некоторых ситуациях удобнее разработать DLL и зарегистрировать сборку в MSSQL и запустить триггер UPDATE.
У меня была попытка разработать DLL для регистрации сборки на Server2 который сработает при UPDATE Server2, Table_ActNow.
Я разработал класс с использованием C# и платформы DOTNET 4.8< /em>.
И логика моего класса заключалась в использовании Table Adaptor, который будет загружать данные из Server1 TableA, SQL пример SELECT TOP(1) * FROM TableA
в объект Набор данных с помощью метода Fill(), обработать загруженные данные, заполнить другие 2 объекта Набор данных обработанными данные и используйте эти два объекта для вставки в Server2 TableB и TableC через Table Adaptor каждого объекта с помощью INSERT< /code>.
Проблема в том, что если мой класс запускается MSSQL, координатором распределенных транзакций Microsoft (MSDTC), который управляет транзакциями и соединениями и в этом случае сообщает об ошибках (DTC настроен корректны на обоих серверах и работают правильно).
После нескольких дней отладки я обнаружил, что методы команд SQL Table Adaptor не отображаются, в В результате транзакция завершится неудачно.
Единственное решение, которое может сработать, — это добавить в частичный класс методов Table Adaptor, которые будут дополнительно раскрывать команду SQL. методы (Я это не проверял! )
Согласно документации Microsoft Адаптеры таблиц следует использовать в CRUD приложения.
Также в документации Microsoft относительно транзакций приводятся примеры использования SqlPipe, в этом случае мне приходится управлять открытием и закрытием соединений и проверьте, выполняют ли команды sql задание во время транзакции.
Потому что я наблюдал при использовании Адаптеров таблиц для заполнения Набора данных< /strong> и затем что-то сделать с этими данными, процесс это намного быстрее и эффективнее по сравнению с другим случаем, когда мне приходится управлять соединением, создавать переменные и готовить другие шаги для работы с данными, как в случае, когда я использую SqlPipe.С точки зрения опытного человека я хотел бы знать, каков элегантный и оптимизированный способ сделать это (в .NET)?
Это неправильно использовать дополнительные адаптеры таблиц
или это слишком много усилие?
Стоит ли мне использовать SqlPipe ?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ecial-case
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»