关于c#:从MS Access批量复制到SQL Server


Bulk copy from MS Access to SQL Server

我正在尝试将表从MS Access数据库复制到SQL Server数据库中。

这是代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
private static void BulkCopyAccessToSQLServer(string sql, string destinationTable,string fileName)
{
  using (DataTable dt = new DataTable())
  {
     using (OleDbConnection conn = new OleDbConnection(String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}", fileName)))
     using (OleDbCommand cmd = new OleDbCommand(sql, conn))
     using (OleDbDataAdapter adapter = new OleDbDataAdapter(cmd))
     {
         cmd.Connection.Open();
         adapter.SelectCommand.CommandTimeout = 240;
         adapter.Fill(dt);
         adapter.Dispose();
     }
     using (SqlConnection conn2 = new SqlConnection(connStr))
     {
         conn2.Open();
         using (SqlBulkCopy copy = new SqlBulkCopy(conn2))
         {
             copy.DestinationTableName = destinationTable;
             copy.BatchSize = 1000;
             copy.BulkCopyTimeout = 240;
             copy.WriteToServer(dt);
             copy.NotifyAfter = 1000;
         }
     }
  }
}

像这样调用这个函数…

1
BulkCopyAccessToSQLServer("select * from Table1","Table1","C:\\db.??accdb");

我得到以下错误:

System.Data.OleDb.OleDbException: Could not find file 'C:\db.??accdb'.
at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString
constr, OleDbConnection connection)
at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions
options, Object poolGroupProviderInfo, DbConnectionPool pool,
DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection
owningConnection, DbConnectionPoolGroup poolGroup)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection
owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection
outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OleDb.OleDbConnection.Open()
at WebService.BulkCopyAccessToSQLServer(String sql, String destinationTable, String fileName)
at WebService.Import()

我做错什么了?


您正在从堆栈跟踪的外观运行来自Web服务的批量导入。

Web服务进程是否有足够的权限访问C:\db.accdb