我想將表格從MS Access數據庫複製到SQL Server數據庫中。從MS Access到SQL Server的大容量副本
這是代碼:
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;
}
}
}
}
調用這樣這個函數...
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()
我在做什麼錯?
確定數據庫'C:\ db.accdb'存在嗎? – Heinzi 2012-02-22 16:50:15
是的,它確實做到了 – Beginner 2012-02-22 17:02:43
我通過sql管理完成了這一點,但需要通過我的代碼 – Beginner 2012-02-22 17:05:26