Вставьте запись на удаленный SQL Сервер с помощью SqlBulkCopy в ASP. NET MVC - PullRequest
0 голосов
/ 20 апреля 2020

Я управлял информацией о поставщике, хранящейся в базе данных на удаленном сервере, из моего ASP. NET MVC веб-приложения.

Я могу успешно выполнять обычные операции CRUD.

У меня также есть функция в этом веб-приложении для вставки информации о поставщике в базу данных на удаленном сервере с использованием SqlBulkCopy.

using (oSqlBulkCopy = new SqlBulkCopy(pConnectionString, SqlBulkCopyOptions.Default))
{
    string[] vColumns = { "vSupplierID", "vUniqueRegRefNumber", "vIsSupplierActive", "vSupplierInactiveReason", "vSupplierInactiveDate", "vIsAssociated", "vSupplierTypeCode", "vSupplierTypeName", "vSupplierSubTypeCode", "vSupplierSubTypeName", "vGovernmentTypeCode", "vGovernmentTypeName", "vIndustryClassificationCode", "vIndustryClassificationName", "vCountryOfOriginCode", "vCountryOfOriginName", "vLegalName", "vTradingName", "vIDTypeCode", "vIDTypeName", "vSAIDNumber", "vForeignIDNumber", "vForeignPassportNumber", "vWorkPermitNumber", "vSACompanyNumber", "vRegistrationDate", "vForeignCompanyRegNo", "vSATrustRegNo", "vForeignTrustRegistrationNumber", "vDateOperationStarted", "vHaveBankAccount", "vBusinessStatusCode", "vBusinessStatusName", "vBusinessStatusLastVerificationDate", "vCreatedDate", "vEditDate", "vBulkFileBackupName" };

    string vTableName = "KNO_DSM_RT_Supplier_Temporary";

    Mapping.MapColumns(oSqlBulkCopy, vTableName, vColumns);

    oSqlBulkCopy.BatchSize = 1;
    oSqlBulkCopy.WriteToServer(this);
}

С первой попытки: вставляемая информация о поставщике была загружена из стороннего веб-сервиса , У меня есть следующие ошибки во время вставки / обновления информации о поставщике

using SqlBulkCopy;

При 2-й попытке

Произошла ошибка при импорте идентификации поставщика: ошибка транспортного уровня при получении результатов от сервер. (поставщик: поставщик сеанса, ошибка: 19 - физическое соединение не используется) Идентификатор поставщика не импортирован для текущего поставщика

При третьей попытке

Ошибка при импорте идентификации поставщика : Тайм-аут выполнения истек. Время ожидания истекло до завершения операции или сервер не отвечает. Идентификатор поставщика не импортирован для текущего поставщика

При четвертой попытке

Произошла ошибка при импорте идентификации поставщика: произошла ошибка, связанная с сетью или конкретным экземпляром c, при установлении подключение к SQL серверу. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра правильное и что SQL Сервер настроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL сервером) Идентификатор поставщика не импортируется для текущего поставщика

Иногда генерируется

Удаленный сервер вернул ошибку. Неверный запрос (400)

Пожалуйста, помогите ...

1 Ответ

1 голос
/ 20 апреля 2020

Тот факт, что вы получаете различные ошибки в последующем, странный, но я замечаю кое-что, что побеждает цель массовой вставки:

oSqlBulkCopy.BatchSize = 1;

Это свойство обычно должно иметь гораздо большее значение для фактического сокращения количества обращений.

Не уверен, но это может привести к проблемам из-за большого количества запросов к серверу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...