2012-07-09 116 views
2

我有一个本机C++应用程序,我试图使用ADO连接到一个localdb实例。手动启动我的实例后,我可以运行sqllocaldb info v11.0并查看数据库实例正在运行。无法连接到SQL LocalDB

我的代码如下。

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

您是否在本地计算机上安装了.NET 4.02或更高版本?这是使用localdb的先决条件 – Steve 2012-07-09 21:45:24

+0

我没有运气安装.NET 4.02(来自http://support.microsoft.com/kb/2544514),虽然我认为这只是它需要它与VS2010 – 2012-07-10 12:36:36

回答

1

我发现我的问题。安全性必须设置为,如下所示。

ADO::_ConnectionPtr spConnection (__uuidof (ADO::Connection)); 
spConnection->Open (L"Provider=SQLNCLI11;Server=(localdb)\\v11.0;Integrated Security=SSPI", L"", L"", 0); 
0

ADO连接对象具有一个Error集合,该集合保存到目前为止发生的t错误列表。你可以看看这些错误,看看有什么不对。 通常,连接到SQL Server时可能会出错两件事。 1.登录失败。 2.SQL Server未配置,因此您可以远程连接到它。 由于您尝试连接到本地服务器,因此很难成为第二个原因。 正如您现在所说的那样,当涉及到SQL Server时,有两种不同类型的身份验证:Windows和SQL Server.如果混合模式是混合模式,您可以在SQL Server选项中设置它们中的每一个,或者同时使用它们中的一个选择。 根据您的连接字符串,您正在使用Windows模式身份验证,因此您应该使用可以登录到SQL Server的Windows用户登录。如果SQL Server不是这种情况,那么您应该在连接字符串中提供SQL用户凭据。 无论如何检查连接对象的错误集合,看看你的本地数据库是否有其他错误。

+0

唯一的要求错误集合中的错误是'多步OLE DB操作产生的错误。检查每个OLE DB状态值(如果可用)。没有工作完成。' – 2012-07-10 12:53:13