您的位置:首页 > 数据库

MS access 数据定时导入MS SQL Server

2013-03-13 14:50 260 查看
有一个程序,是记录公司域用户打印记录,它使用的是MS Access database(A服务器 32bit)。想以这些记录做一些Summary报表,报表实现是另外一台服务器Intranet web 服务(B服务器 64bit)。如查在非一台服务器读取远端的Access数据,也许需要数据库文件共享。网管说不能在服务器安装32 bit的Ole 驱动,不也能共享A服务器的Access数据库文件。

Insus.NET需要怎样做?
只有想法是把这些记录每天定时转存一次至公司的数据库(MS SQL Server 2008 R2)(C服务器)。写一个控制台应用程序,放在Access数据库同一目录,然后让A服务器的任务定时执行这控制台应用程序。

在数据库设计一张表,表结构与Access需要转存记录的表结构一样。 只有第一次转存时,数据量大的话,时间需要长久一些,以后每次只转存SQL 数据库内没有的数据。

View Code

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Text;

namespace Insus.NET
{
class Program
{
static void Main(string[] args)
{
PrintLog objPrintLog = new PrintLog();
int maxID = objPrintLog.GetMaxID();

string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Environment.CurrentDirectory + "\\printmgt.mdb";
string sql = "SELECT [porder],... FROM [printlog] WHERE [porder] > " + maxID + "";
DataSet objDs = new DataSet();

using (OleDbConnection oleDbConn = new OleDbConnection(strConn))
using (OleDbCommand objCmd = new OleDbCommand(sql, oleDbConn))
using (OleDbDataAdapter objDa = new OleDbDataAdapter(objCmd))
{
objDa.Fill(objDs);
}

objPrintLog.PrintLogCollection = objDs.Tables[0];
objPrintLog.ImportData();
}
}
}


System.Environment.CurrentDirectory这个主要是为了获取控制如应用程序所在目录位置,这样不管数据在那一个位置,只要把这个控制台应用程序可执行文件放在同Access的数据库同一目录即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: