通过连接字符串连接到 SQL Server 实例不起作用

通过连接字符串连接到 SQL Server 实例不起作用

为什么这可以连接到我的远程 SQL Server 数据库:

            var srvConn = new ServerConnection("sql01");
            srvConn.LoginSecure = false;  
            srvConn.Login = "unittests";
            srvConn.Password = "mypwd";
            srvConn.DatabaseName = "MediaFilesDb";

            var srv1 = new Server(srvConn);
            Console.WriteLine(srv1.Information.Version); 

但这不起作用:

        var scsb = new SqlConnectionStringBuilder();
        scsb.DataSource = "sql01";
        scsb.InitialCatalog = "MediaFilesDb";
        scsb.IntegratedSecurity = false;
        scsb.UserID = "unittests";
        scsb.Password = "mypwd";

        var srv1 = new Server(scsb.ConnectionString);
        Console.WriteLine(srv1.Information.Version);

我得到了臭名昭著的错误 40:

建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。找不到或无法访问服务器。请验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)

如果我将正在生成的连接字符串粘贴到另一个工具(例如 CodeSmith)中,它可以正常工作并建立连接。

为什么第二个例子失败了?

编辑:

如果我为网络库指定 TCP/IP:

scsb.网络库 = “dbmssocn”;

我收到此错误:

键“数据源”的值的长度超出了其限制“128”。

这是我的连接字符串:

数据源=sql01;初始目录=MediaFilesDb;集成安全性=False;用户ID=unittests;密码=****;池=False;网络库=dbmssocn;

答案1

SQL 实例是在本地计算机上还是在其他计算机上?您是否尝试过更改 SqlConnection 的 NetworkLibrary 属性以使其使用 TCP/IP 而不是命名管道?

相关内容