我需要一种将所有数据从 SQL Server CE 传输到 Access mdb 数据库的解决方案。
我尝试了这种方法http://www.codeproject.com/Answers/483989/HowplustoplusExportplusSQLplusTablesplusToplusAcce#answer2(解决方案#2)但收到错误“连接字符串或IN子句中未指定数据库”。
如果我连接到非紧凑型 SQL 服务器,则该代码有效。
我想问题出在 IN 子句中的连接字符串上,但我不知道如何更改它。
这是我的代码:
private void ExportTable(string tableName, string source, string destination)
{
var connStr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}", destination);
var cmdText = string.Format("SELECT * INTO {0} FROM [{0}] IN ''[Data Source={1};Max Database Size='4000';Persist Security Info=False;];", tableName, source);
using (var conn = new OleDbConnection(connStr))
{
conn.Open();
using (var cmd = new OleDbCommand(cmdText, conn))
{
cmd.ExecuteNonQuery(); // error on this line
}
conn.Close();
}
}
连接字符串:Data Source={1};Max Database Size='4000';Persist Security Info=False; 当我直接连接到数据库时工作正常。
更新:显然 IN 子句中源数据库的格式应如下所示:
[ type ; 数据库=路径]
(参见:http ://answers.microsoft.com/en-us/office/forum/office_2010-access/access-2010-runtime-error-3170-could-not-find/0b085797-618a-488f-b1b4-30af00f04b3f )
当我使用
var cmdText = string.Format("SELECT * INTO {0} FROM [{0}] IN ''[SqlServer CE; DATABASE={1}];", tableName, source);
我收到不同的错误:找不到可安装的 ISAM。
您知道SQLServer CE 的正确类型吗?完全支持吗?我找不到任何有关它的信息。
我也尝试过:SQL CE、SQLSERVER.CE、Microsoft.SQLSERVER.CE.OLEDB.3.5、Microsoft.SQLSERVER.MOBILE.OLEDB.3.0 等 - 同样的错误...