首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Access 連接 SQL Server 同步更新:C# 定時服務實現數據遷移

     編輯:程式設計綜合問答

方案

編寫 **C# Windows Service / 定時任務**,流程:

  1. 連接 SQL Server 讀取最新表結構/數據。
  2. 連接 Access(ACE OLEDB)寫入對應表。
  3. 記錄同步水位(時間戳/自增 ID),增量同步避免全量覆蓋。
  4. 異常重試、日誌記錄、監控告警。

關鍵代碼片段


string sqlConn = "Server=...;Database=...;User=...;Pwd=...";
string accConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\data.accdb;";

using (var sql = new SqlConnection(sqlConn))
using (var acc = new OleDbConnection(accConn)) {
    sql.Open(); acc.Open();
    // 讀取 SQL Server
    var dt = new DataTable();
    new SqlDataAdapter("SELECT * FROM dbo.Material WHERE UpdateTime > @last", sql)
        .SelectCommand.Parameters.AddWithValue("@last", lastSync).Fill(dt);
    // 批量寫入 Access
    using (var bulk = new OleDbCommand()) {
        bulk.Connection = acc;
        foreach (DataRow row in dt.Rows) {
            bulk.CommandText = BuildInsertSql(row);
            bulk.ExecuteNonQuery();
        }
    }
    // 更新水位
    SaveLastSync(DateTime.Now);
}

替代方案

  • SQL Server **Linked Server** 連接 Access,直接 `INSERT INTO OPENROWSET...` 推送(需服務器端安裝 ACE 驅動)。
  • SSIS 包部署在 SQL Server Agent 定時執行(可視化、無代碼)。
  • 若 Access 僅作為本地緩存,考慮改用 **SQLite / LocalDB** 替代,同步更簡單。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved