我一直在通过ASP.NET MVC Web应用程序管理存储在远程服务器上数据库中的供应商信息。
我可以成功执行正常的CRUD操作。
我在此Web应用程序中也具有使用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);
}
[第一次尝试:已插入的供应商信息已从第三方Web服务下载。在插入/更新供应商信息时出现以下错误
using SqlBulkCopy;
第二次尝试
导入供应商标识期间发生错误:从服务器接收结果时发生了传输级错误。 (提供者:会话提供者,错误:19-无法使用物理连接)未为当前供应商导入供应商标识
第三次尝试
供应商标识导入期间发生错误:执行超时到期。在操作完成之前超时时间已过,或者服务器没有响应。未为当前供应商导入供应商标识
第四次尝试
在供应商标识导入期间发生错误:建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称正确,并且已将SQL Server配置为允许远程连接。 (提供者:命名管道提供者,错误:40-无法打开与SQL Server的连接)未为当前供应商导入的供应商标识
有时会生成
远程服务器返回错误。错误的请求(400)
请帮助...
随后您会收到各种错误的事实很奇怪,但是我注意到这种东西违反了批量插入的目的:
oSqlBulkCopy.BatchSize = 1;
[This property通常应具有更大的值以实际减少往返次数。
不确定,但是由于对服务器发出大量查询,因此可能会导致麻烦。