C# 到SQL Server 2012 LocalDB实例的ODBC连接

C# 到SQL Server 2012 LocalDB实例的ODBC连接,c#,odbc,sql-server-2012,localdb,C#,Odbc,Sql Server 2012,Localdb,我们有一个“遗留”应用程序,它使用ODBC连接到底层数据库,可以是Access、Oracle或SQL Server。出于单元(或者更准确地说,是“集成”)测试目的,我想连接一个SQLServer2012 LocalDB实例。但是,我无法找到要使用的正确ODBC连接字符串 我试过: [TestMethod] public void OdbcConnectionToLocalDb() { string connectionString = "DRIVER=SQ

我们有一个“遗留”应用程序,它使用ODBC连接到底层数据库,可以是Access、Oracle或SQL Server。出于单元(或者更准确地说,是“集成”)测试目的,我想连接一个SQLServer2012 LocalDB实例。但是,我无法找到要使用的正确ODBC连接字符串

我试过:

    [TestMethod]
    public void OdbcConnectionToLocalDb()
    {
        string connectionString = "DRIVER=SQL Server Native Client 11.0;Trusted_Connection=Yes;SERVER=(localdb)\v11.0;Description=LocalDB;";
        using (OdbcConnection connection = new OdbcConnection(connectionString))
        {
            using (var command = new OdbcCommand("select * from Person", connection))
            {
                connection.Open();
                // ... 
            }
        }
    }
但是,当连接打开时,会引发以下异常:

System.Data.Odbc.OdbcException: ERROR [08001] [Microsoft][SQL Server Native Client 11.0]Named Pipes Provider:  Could not open a connection to SQL Server [67]. 
ERROR [HYT00] [Microsoft][SQL Server Native Client 11.0]Login timeout expired
ERROR [08001] [Microsoft][SQL Server Native Client 11.0]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.
是否可以通过ODBC连接/驱动程序连接到SQL Server 2012 LocalDB?是否可以连接到特定的文件

[编辑]
加勒特指出这是可能的,很好。我一定是连接字符串出错了,所以我的问题应该是:连接字符串应该是什么?

是的,这是可能的。确保安装了最新的驱动程序:SQL Server本机客户端“Denali”(用于ODBC和OLE DB)

查看此处了解更多信息:

您需要这样指定连接字符串:

Provider=SQLNCLI11.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TestDB;Data Source=(localdb)\v11.0

我认为最重要的是,您可以将其作为数据源而不是服务器引用。

这里可能还有一些有用的信息:谢谢,@AaronBertrand。这确实有一些有用的信息,但我看不到任何具体有助于解决我的问题的信息。正在向我的LocalDB获取有效的ODBC连接字符串。这就是我将其作为注释而不是答案发布的原因。:-)我可以问一下,为什么要将遗留应用程序连接到LocalDB而不是普通的Express实例?您的连接字符串看起来像是用于生成LocalDB引擎实例,然后执行创建数据库之类的操作的字符串。如果您已经创建了一个实例和一个数据库,我希望在您的连接字符串中看到更多的“东西”,以及一个更具体的
服务器
@AaronBertrand,好问题!“遗留”应用程序的代码将在指定的数据库中生成模式。我希望有一个LocalDB.mdb文件,其中包含基本的空数据库,然后由这个自动模式生成代码填充,然后对这个一次性数据库运行单元(或“集成”)测试。我想我真的在问:我的ODBC连接字符串中需要什么“东西”来连接到特定的LocalDB文件?我根本没有看到这里提到的数据库或数据文件。“这个人在哪个数据库?谢谢你的回答,@Garrett。”。很高兴这是可能的,这就是我所希望的。我已经下载并安装了最新的SQL Server本机客户端(顺便说一句,从这里查找“Microsoft®SQL Server®2012本机客户端”)。然而,我似乎没有正确的连接字符串,因为我仍然得到与上面相同的错误。