在ADO中使用“最大数据库大小”选项会导致“打开”命令抛出

时间:2015-07-23 16:13:40

标签: c++ sql-server-ce ado

我有一个SQLCompact数据库,我尝试使用ADOC++进行访问。但是由于数据库的大小(300MB,超过默认的256MB限制),我必须在连接字符串中指定Max Database Size。但是这样做会导致.Open(...)函数抛出。

我使用的代码:

HRESULT hr = conn.CreateInstance(__uuidof(Connection), NULL);
conn->Open(L"Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0;Data Source=test.sdf;Max Database Size=512", L"", L"",adConnectUnspecified);  

错误:

  

HR:DB_E_ERRORSOCCURRED

     

描述:"多步OLE DB操作产生错误。检查每个OLE DB状态值(如果可用)。没有工作。"

     

消息:" IDispatch错误#3105"

注意:

我尝试使用相同的代码,使用较小的数据库并从连接字符串中删除Max Database Size,它按预期工作。再次添加Max Database Size会导致问题重新出现,因此我假设它是导致错误的问题。

有什么想法?如何使用Provider默认大小的数据库?

1 个答案:

答案 0 :(得分:2)

您必须使用:

Provider= Microsoft.SQLSERVER.CE.OLEDB.4.0;Data Source=test.sdf;ssce:Max Database Size=512

(同样适用于密码和其他SQL Compact特定关键字)