我有一个原生C ++应用程序,在其中我尝试使用ADO连接到localdb实例。手动启动我的实例后,我可以运行sqllocaldb info v11.0
并看到数据库实例正在运行。
我的代码如下。
ADO::_ConnectionPtr spConnection (__uuidof (ADO::Connection));
spConnection->Open (L"Provider=SQLNCLI11;Server=(localdb)\\v11.0;Integrated Security=true", L"", L"", 0);
错误代码为DB_E_ERRORSOCCURRED(0x80040e21),错误消息为多步OLE DB操作生成错误。检查每个OLE DB状态值(如果可用)。没有工作。
我能够使用SQL Server Management Studio成功连接到数据库,我在连接字符串中使用和不使用提供程序以及指定初始目录都尝试过。
答案 0 :(得分:1)
我发现了我的问题。安全性必须设置为sspi
,如下所示。
ADO::_ConnectionPtr spConnection (__uuidof (ADO::Connection));
spConnection->Open (L"Provider=SQLNCLI11;Server=(localdb)\\v11.0;Integrated Security=SSPI", L"", L"", 0);
答案 1 :(得分:0)
ADO连接对象有一个Error集合,用于保存到目前为止发生的错误列表。你可以看看这些错误,看看有什么不对。 通常,连接到SQL Server时可能会出现两件事。 1.登录失败。 2.未配置SQL Server,以便您可以远程连接它。 由于您尝试连接到本地服务器,因此很难成为第二个原因。 正如您现在可能在SQL Server上有两种不同类型的身份验证:Windows和SQL Server。如果在SQL Server选项中设置了每个身份验证,则可以使用其中一种身份验证,如果选择混合模式,则可以使用两种身份验证。 根据您的连接字符串,您正在使用Windows模式身份验证,您应该使用可以登录到SQL Server的Windows用户登录。如果您的SQL Server不是这种情况,那么您应该在连接字符串中提供SQL用户凭据。 无论如何检查连接对象的错误集合,看看你的本地数据库是否还有其他问题。