C# SQL大容量复制一直运行到超时,但不';无法为特定服务器复制。有时,它会在长时间等待后复制(15次中复制1次)
下面是我用来将数据从Excel移动到SQL Server数据库的Windows窗体应用程序的代码。如果我将服务器更改为本地数据库,它将在2秒内运行并复制28000条记录 对于前面提到的另一台服务器,它会一直运行到超时,有时会在很长一段时间后进行复制C# SQL大容量复制一直运行到超时,但不';无法为特定服务器复制。有时,它会在长时间等待后复制(15次中复制1次),c#,sql-server,excel,database,sqlbulkcopy,C#,Sql Server,Excel,Database,Sqlbulkcopy,下面是我用来将数据从Excel移动到SQL Server数据库的Windows窗体应用程序的代码。如果我将服务器更改为本地数据库,它将在2秒内运行并复制28000条记录 对于前面提到的另一台服务器,它会一直运行到超时,有时会在很长一段时间后进行复制 public partial class form1 : Form { public form1() { InitializeComponent(); button2.Enable
public partial class form1 : Form
{
public form1()
{
InitializeComponent();
button2.Enabled = false;
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter= "Excel Files|*.xls;*.xlsx;*.xlsm";
button2.Enabled = false;
lblStatus.Text = null;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string strfilename = openFileDialog1.FileName;
filePath.Text = strfilename;
button2.Enabled = true;
}
}
private void button2_Click(object sender, EventArgs e)
{
button2.Enabled = false;
this.Cursor = Cursors.WaitCursor;
lblStatus.Text = "Uploading...";
progressBar1.Style = ProgressBarStyle.Marquee;
progressBar1.MarqueeAnimationSpeed = 50;
backgroundWorker1.RunWorkerAsync(argument: filePath.Text);
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
string filePath = (string)e.Argument;
if (File.Exists(filePath))
{
try
{
String Connection = "Data Source=*******; Initial Catalog= ****; User Id=*****; Password= *****; Integrated Security=false;";
String excelConnString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0\"", filePath);
using (SqlConnection strConnection = new SqlConnection(Connection))
{
//Create Connection to Excel work book
using (OleDbConnection excelConnection = new OleDbConnection(excelConnString))
{
//Create OleDbCommand to fetch data from Excel
using (OleDbCommand cmd = new OleDbCommand("Select * from [Sheet0$]", excelConnection))
{
excelConnection.Open();
using (OleDbDataReader dReader = cmd.ExecuteReader())
{
using (SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection, SqlBulkCopyOptions.TableLock |
SqlBulkCopyOptions.FireTriggers |
SqlBulkCopyOptions.UseInternalTransaction,
null))
{
e.Result = 0;
sqlBulk.DestinationTableName = "tblCMHC";
string sClearSql = "Truncate table " + sqlBulk.DestinationTableName;
SqlConnection sqlConn0 = new SqlConnection(Connection);
SqlCommand sqlCMD0 = new SqlCommand(sClearSql, sqlConn0);
sqlConn0.Open();
sqlCMD0.CommandTimeout = 80000;
sqlCMD0.ExecuteNonQuery();
sqlConn0.Close();
sqlBulk.ColumnMappings.Add("AptSuite", "AptSuite");
sqlBulk.ColumnMappings.Add("City", "City");
sqlBulk.ColumnMappings.Add("ChangedDate", "ChangedDate");
sqlBulk.ColumnMappings.Add("Country", "Country");
sqlBulk.ColumnMappings.Add("Type", "Type");
sqlBulk.ColumnMappings.Add("PostalCode", "PostalCode");
sqlBulk.ColumnMappings.Add("Name", "Name");
sqlBulk.ColumnMappings.Add("SSN", "SSN");
sqlBulk.ColumnMappings.Add("BirthDate", "BirthDate");
sqlBulk.ColumnMappings.Add("Gender", "Gender");
sqlBulk.ColumnMappings.Add("Race", "Race");
sqlBulk.ColumnMappings.Add("PrimaryLanguage", "PrimaryLanguage");
sqlBulk.ColumnMappings.Add("Education", "Education");
sqlBulk.ColumnMappings.Add("Program", "Program");
sqlBulk.ColumnMappings.Add("PrimaryDx", "PrimaryDx");
sqlBulk.ColumnMappings.Add("PrimaryDxDesc", "PrimaryDxDesc");
sqlBulk.ColumnMappings.Add("SecondaryDx", "SecondaryDx");
sqlBulk.ColumnMappings.Add("SecondaryDxDesc", "SecondaryDxDesc");
sqlBulk.ColumnMappings.Add("AdmissionDate", "AdmissionDate");
sqlBulk.ColumnMappings.Add("DischargeDate", "DischargeDate");
sqlBulk.ColumnMappings.Add("StatusEpisodes", "StatusEpisodes");
sqlBulk.ColumnMappings.Add("StatusClients", "StatusClients");
sqlBulk.ColumnMappings.Add("ClientID", "ClientID");
sqlBulk.ColumnMappings.Add("EffectiveDate", "EffectiveDate");
sqlBulk.BulkCopyTimeout = 1800;
sqlBulk.BatchSize = 3000;
strConnection.Open();
while (dReader.Read())
{
sqlBulk.WriteToServer(dReader);
}
strConnection.Close();
string sCount = "Select count(*) from " + sqlBulk.DestinationTableName;
SqlConnection sqlConn1 = new SqlConnection(Connection);
SqlCommand sqlCMD1 = new SqlCommand(sCount, sqlConn1);
sqlConn1.Open();
sqlCMD1.CommandTimeout = 80000;
int count=(int)sqlCMD1.ExecuteScalar();
sqlConn1.Close();
e.Result = count;
}
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
else
{
MessageBox.Show("File path does not exist");
}
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
progressBar1.MarqueeAnimationSpeed = 0;
progressBar1.Style = ProgressBarStyle.Blocks;
progressBar1.Value = progressBar1.Minimum;
this.Cursor = Cursors.Default;
lblStatus.Text = null;
int count = (int)e.Result;
MessageBox.Show(count + " Rows Uploaded!");
}
private void button3_Click(object sender, EventArgs e)
{
Close();
}
}
什么是SQLClient连接字符串?服务器是Express还是常规服务器(本地和远程)。它是常规服务器!source=172.******\\hsms5您提供的只是主机和实例,没有任何其他选项。您的SQLClient连接字符串是什么?服务器是Express还是常规服务器(本地和远程)。它是常规服务器!source=172.******\\hsms5您提供的只是主机和实例,没有任何其他选项。