有A库中表a,B库中表b。将a表中数据取出插入到b表,成功则删除a表中相应的记录。
每次插入数据时动态更换连接字符串为A库连接,删除时则改为B库连接,连接字符串为一静态变量。
现在问题是速度很慢,请问各位怎么让速度变快点,谢谢。

解决方案 »

  1.   

    insert into [B].[dbo].[b](field) select [A].[dbo].[a]
      

  2.   

    怎么还要更改数据库连接?你是从serverA到serverB?
      

  3.   

    刚按你说的第一条改了下,速度还是慢。
    贴一段代码,大家看看有啥问题没
     //循环要同步的表
                foreach (string key in tablesList)
                {
                    string tableName = key;
                    //得到要同步的数据
                    string sqlString = string.Format("Select Top 100 * From {0} Order By {1} asc", tableName, primaryName);
                    dataAdapter = new SqlDataAdapter(sqlString, A表连接);
                    DataSet ds = new DataSet();
                    dataAdapter.Fill(ds);
                    DataTable dataTable = ds.Tables[0];                try
                    {
                        StringBuilder insertString = new StringBuilder();
                        //循环要同步数据的行
                        foreach (DataRow dataRow in dataTable.Rows)
                        {
                            insertString.Append(" insert into " + tableName + " values(");                        //循环要同步的数据的列
                            foreach (DataColumn dataColumn in dataTable.Columns)
                            {
                                    // 如果为int型则不需要再SQL语句中加单引号
                                    if (dataColumn.DataType == System.Type.GetType("System.Int32"))
                                    {
                                        insertString.Append(dataRow[dataColumn.ColumnName]);
                                    }
                                    else //否则加上单引号
                                    {
                                        insertString.Append("'");
                                        insertString.Append(dataRow[dataColumn.ColumnName]);
                                        insertString.Append("'");
                                    }                                insertString.Append(",");
                            }                        //移除最后一个多余的逗号
                            insertString.Remove(insertString.Length - 1, 1);
                            insertString.Append(")");                        if (OperData(insertString.ToString(), B表连接))
                            {
                                string deleteString = "Delete From " + tableName + " Where " + primaryName + "=" + dataRow[primaryName];                            OperData(deleteString, A表连接);
                            }
                        }
                    }
                    catch (Exception exception)
                    {
                    }
      

  4.   

    批量数据操作SqlBulkCopy 
    或读取数据到数据集,sqldataadapter
    连接字符串到config文件,资源释放using
    也可在sql server实现