小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用ADO.NET下的SqlBulkCopy類執(zhí)行批量復(fù)制操作

 悟靜 2013-03-03

很多時(shí)侯,我們需要在數(shù)據(jù)庫(kù)間復(fù)制大量數(shù)據(jù),如SQLSERVER提供的BCP.EXE命令行工具,在ADO.NET下SqlBulkCopy類提供了一個(gè)高性能的方法WriteToServer來(lái)復(fù)制數(shù)據(jù)。該方法可以接受一個(gè)DataRow對(duì)像數(shù)據(jù)、一個(gè)實(shí)現(xiàn)IDbDataReader接口的對(duì)像和一個(gè)DataTable,或者接受一個(gè)DataTable對(duì)像和一個(gè)DataRowState枚舉值,以實(shí)現(xiàn)從大多數(shù)位置中獲取數(shù)據(jù)。

        /// <summary>
        /// 在目標(biāo)數(shù)據(jù)庫(kù)與源數(shù)據(jù)庫(kù)之間批量復(fù)制數(shù)據(jù)
        /// </summary>
        /// <param name="SourceConnectionstr">源數(shù)據(jù)庫(kù)連接字符串</param>
        /// <param name="TargetConnectionstr">目標(biāo)數(shù)據(jù)庫(kù)連接字符串</param>
        /// <param name="SourceSQLstr">查詢數(shù)據(jù)的SQL語(yǔ)句,必須包含主鍵,否則更新不成功,并無(wú)錯(cuò)誤提示</param>
        /// <param name="TargetTableName">更新目標(biāo)數(shù)據(jù)庫(kù)中的表名</param>
        /// <returns>Boolean</returns>
        public static Boolean dbtodb(string SourceConnectionstr,  string TargetConnectionstr, string SourceSQLstr,  string TargetTableName)
        {
            System.Data.SqlClient.SqlConnection SourceConn= new  System.Data.SqlClient.SqlConnection();
            System.Data.SqlClient.SqlConnection TargetConn = new System.Data.SqlClient.SqlConnection();
            try
            {
                SourceConn.ConnectionString = SourceConnectionstr;
                TargetConn.ConnectionString = TargetConnectionstr;
                System.Data.SqlClient.SqlCommand cmd = SourceConn.CreateCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = SourceSQLstr;

                SourceConn.Open();
                TargetConn.Open();

                using (System.Data.SqlClient.SqlDataReader rdr = cmd.ExecuteReader())
                {
                    //MessageBox.Show (rdr.HasRows.ToString()) ;
                    if (!rdr.HasRows)
                    {
                        return false;
                    }
                    using (System.Data.SqlClient.SqlBulkCopy bc = new System.Data.SqlClient.SqlBulkCopy(TargetConn))
                    {
                        //超時(shí)之前操作所允許完成的秒數(shù)
                        bc.BulkCopyTimeout = 360;
                        //目標(biāo)服務(wù)器上的表名
                        bc.DestinationTableName = TargetTableName;
                        bc.WriteToServer(rdr);                       
                    }
                }
            }
            catch
            {
                throw;
            }
            finally
            {

                //關(guān)閉連接
                SourceConn.Close();
                TargetConn.Close();
            }

            return true;

}

如果想以最少資源獲取最佳性能,就考濾使用IDbDateReader參數(shù)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多