好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > SQL Server中避免觸發鏡像SUSPEND的N種方法

SQL Server中避免觸發鏡像SUSPEND的N種方法

熱門標簽:臺灣外呼系統軟件 南京怎么申請400這種電話 樂昌電話機器人 南通智能外呼系統怎么樣 地圖標注可以編輯地名嗎 疫情時期電話機器人 真3地圖標注 地圖標注跑線下市場 濮陽清豐400開頭的電話申請

背景:
我們在使用數據庫的過程中,很多時候要追求性能,特別在處理大批量數據的時候更希望快速處理。那么對SQL SERVER而言,數據庫實現大批量插入的優化方案,這里特別介紹通過大容量插入的一種方式。
基本原理:
簡單恢復模式按最小方式記錄大多數大容量操作,對于完整恢復模式下的數據庫,大容量導入期間執行的所有行插入操作被完整地記錄到事務日志中。如果數據導入量較大,會導致迅速填滿事務日志。對于大容量導入操作,按最小方式記錄比完整記錄更有效,并減少了大容量導入操作填滿日志空間的可能性,所以性能會得到極大的提升。
       但是,大容量導入中按最小方式記錄日志的前提條件需要滿足:
1. 當前沒有復制表
2. 指定了表鎖定:

注意:鎖定是 SQL Server 數據庫引擎用來對多個用戶同時訪問同一數據塊的操作進行同步。當事務修改某個數據塊時,它將持有保護所做修改的鎖,直到事務結束。指定大容量導入操作的表鎖定后,該表將在大容量導入操作期間采取大容量更新 (BU) 鎖定。大容量更新 (BU) 鎖允許多個線程將數據并發地大容量導入到同一表中,同時阻止其他不進行大容量導入數據的進程訪問該表。表鎖定可以通過減少表的鎖爭用來提高大容量導入操作的性能。
基本的理論信息還很多,這里不再累述。 

在阿里云SQL SERVER的主備架構中,使用大容量插入時,使用時需要特別留意一個特性需要明確指定,如果不指定,會觸發微軟尚未在SQL Server 2008 R2中未修復的BUG,會導致鏡像SUSPEND,那么如何來避免各種情況呢? 下面列舉了一些常見的場景:
 1、通過ado.net sqlbulkcopy 方式:
只需要將SqlBulkCopy 指定SqlBulkCopyOptions.CheckConstraints就好,數據庫指定AdventureWorks2008R2的Person表。舉個例子:

static void Main()
{
  string srcConnString = "Data Source=(local);Integrated Security=true;Initial Catalog=testdb";
  string desConnString = "Data Source=****.sqlserver.rds.aliyuncs.com,3433;User ID=**;Password=**;Initial Catalog=testdb";
 
  SqlConnection srcConnection = new SqlConnection();
  SqlConnection desConnection = new SqlConnection();
 
  SqlCommand sqlcmd = new SqlCommand();
  SqlDataAdapter da = new SqlDataAdapter();
  DataTable dt = new DataTable();
 
  srcConnection.ConnectionString = srcConnString;
  desConnection.ConnectionString = desConnString;
  sqlcmd.Connection = srcConnection;
 
  sqlcmd.CommandText = @"SELECT top 1000000 [PersonType],[NameStyle],[Title],[FirstName],[MiddleName],[LastName],[Suffix],[EmailPromotion]
           ,[AdditionalContactInfo],[Demographics],NULL as rowguid,[ModifiedDate] FROM [testdb].[dbo].[Person]";
  sqlcmd.CommandType = CommandType.Text;
  sqlcmd.Connection.Open();
  da.SelectCommand = sqlcmd;
  da.Fill(dt);
 
 
  using (SqlBulkCopy blkcpy = new SqlBulkCopy(desConnString, SqlBulkCopyOptions.CheckConstraints))
  //using (SqlBulkCopy blkcpy = new SqlBulkCopy(desConnString, SqlBulkCopyOptions.Default))
  {
    blkcpy.BatchSize = 2000;
    blkcpy.BulkCopyTimeout = 5000;
    blkcpy.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
    blkcpy.NotifyAfter = 2000;
 
    foreach (DataColumn dc in dt.Columns)
    {
      blkcpy.ColumnMappings.Add(dc.ColumnName, dc.ColumnName);
    }
 
    try
    {
      blkcpy.DestinationTableName = "Person";
      blkcpy.WriteToServer(dt);
    }
    catch (Exception ex)
    {
      Console.WriteLine(ex.Message);
    }
    finally
    {
      sqlcmd.Clone();
      srcConnection.Close();
      desConnection.Close();
 
    }
  }
 
}
 
private static void OnSqlRowsCopied(
  object sender, SqlRowsCopiedEventArgs e)
{
  Console.WriteLine("Copied {0} so far...", e.RowsCopied);
}

 2、通過jdbc  sqlbulkcopy 方式:
只需要在初始化對象時指定setCheckConstraints屬性為TRUE,例如:
QLServerBulkCopyOptions copyOptions = new SQLServerBulkCopyOptions();
copyOptions.setCheckConstraints(true);
3、通過DTS/SSIS方式:
1.    import/export data方式需要先保存SSIS包,然后修改Connection Manager的屬性

 

2.    直接使用SQL Server Business Intelligence Development Stuidio新建 SSIS包

3、通過BCP方式
1.      先將數據BCP出來 BCP ...OUT
BCP testdb.dbo.person Out "bcp_data" /t  /N /U **** /P *** /S "****.sqlserver.rds.aliyuncs.com,3433"
2.      然后將數據BCP進去 BCP...IN ,但需要指定提示:/h "CHECK_CONSTRAINTS"
BCP testdb.dbo.person In "bcp_data" /C /N /q /k /h "CHECK_CONSTRAINTS" /U *** /P *** /b 500 /S  "***.sqlserver.rds.aliyuncs.com,3433"
 4、通過bulk insert方式(在RDS不可是實現,因為不允許上傳文件)

BULK INSERT testdb.dbo.person_in
FROM N'D:\trace\bcp.txt'
WITH
(
 CHECK_CONSTRAINTS 
);

四種方式教你在SQL Server中避免觸發鏡像SUSPEND,希望對大家的學習有所幫助。

您可能感興趣的文章:
  • SQLServer 鏡像功能完全實現
  • SQL Server 2008 R2數據庫鏡像部署圖文教程
  • SQL Server 2008 數據庫鏡像部署實例之一 數據庫準備
  • SQL Server 2008 數據庫鏡像部署實例之二 配置鏡像,實施手動故障轉移
  • SQL Server 2008 數據庫鏡像部署實例之三 配置見證服務器
  • SQL Server 2005 鏡像構建手冊(sql2005數據庫同步鏡像方案)

標簽:陜西 通遼 福建 廣安 河北 馬鞍山 阿里 南京

巨人網絡通訊聲明:本文標題《SQL Server中避免觸發鏡像SUSPEND的N種方法》,本文關鍵詞  SQL,Server,中,避免,觸發,鏡像,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL Server中避免觸發鏡像SUSPEND的N種方法》相關的同類信息!
  • 本頁收集關于SQL Server中避免觸發鏡像SUSPEND的N種方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 性欧美xx| 伊人久久大香线蕉AV一区美国| 久久九九99热这里只有精品| 亚洲精品影院久久久久久| 蜜桃一区二区三区在线看| 色综合久久88色综合天天小说| 小妖精抬起臀嗯啊h军人小说| 娇妻被多p| 男女互摸很爽下面流水视频| 中字HD与公的第一次| 欧美ay亚洲ay日韩ay| 啊灬啊灬别停啊灬用力啊免费看| 日日擼夜夜擼狠狠擼88 | 用力深一点用力…| 色综合伊人色综合网站下载| 男人给女人免费囗交视频| 向日葵在线视频播放| 中文字幕精品一区在线入口 | 日本69xX×老师| 国产高潮又粗又猛精品影院 | 公与媳中字HD中字| 韩国欲望校园2免费观看| 俄罗斯xxxxxbbbbbb极品| 亚洲色熟女图激情另类图区| A片高潮狂喷白浆| 午夜美女写真福利写视频| 淫咪咪| 欧美celebritysexvideo| 女人18毛多水多A片毛片7777| 国模青青| 一级一片免费看| 受被路人lj肉车| 果冻传媒婬片AAAA片小说直播| 一区二区三区视频免费观看| 快穿之男配不哭要抱抱| 夜趣宅男宅女第一精品导航| 日本护士撒尿好爽A片| jzzjzz日本成熟少妇| 啊好硬| 久久精品99| 一天影院免费|