无法将 C# 应用程序连接到 MSSQL

Posted

技术标签:

【中文标题】无法将 C# 应用程序连接到 MSSQL【英文标题】:Unable to Connect C# Application to MSSQL 【发布时间】:2017-04-06 07:21:41 【问题描述】:

我正在 Visual Studio 2015 中编写 C# 应用程序。

我正在尝试连接到远程(异地)sql 2008 服务器,我尝试了以下操作:

远程服务器连接已打开

服务器已配置无 TCP 端口。端口行为空白。实际上防火墙已关闭。

我可以远程连接(通过远程桌面)并访问给定 IP 地址上的服务器。

连接字符串 - IP、用户名、密码因明显原因而被删除:

    private void button2_Click(object sender, EventArgs e)
    
        mssqlConnBtn.Text = "Connecting..";
        try
        
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = "Data Source=#.#.#.#\\DC3\\POS,1433;Network Library=DBMSSOCN;Initial Catalog=bDatabase;User ID=[username];Password=[password]";
            conn.Open();
            mssqlConnBtn.Text = "Connected";
        
        catch (System.Data.SqlClient.SqlException exsql)
        
            MessageBox.Show(exsql.Message);
            mssqlConnBtn.Text = "Connect";
        
    

我也试过Data Source=#.#.#.#,1433

错误:

A network-related or instance-specific error occurred while establishing a connection to SQL Server.

The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections.

(provider: TCP Provider, Error:0 - The wait operation timed out.)

这里有什么想法吗?

谢谢!

【问题讨论】:

“Visual Basic 2015 中的 C# 应用程序” - 我确定应该是 Visual Studio 2015? 您是否使用相同的服务器名称将其与 SQL Server Management Studio 连接?如果是,那么只是尝试添加 Persist Security Info=True;进入你的连接字符串 @AnkitkumarBhatt 是的,我使用的是相同的连接信息。我尝试时仍然遇到同样的错误:conn.ConnectionString = "Data Source=#.#.#.#\\DC3\\POS,1433;Network Library=DBMSSOCN;Persist Security Info=True;Initial Catalog=bDatabase;User ID=[username];Password=[password]"; 尝试从 Visual Studio Server Explorer 获取连接字符串,我认为应该是正确的 【参考方案1】:

不知道为什么那里有 2 个实例名称。请尝试以下操作:

"Data Source=#.#.#.#\InstanceName,1433;Network Library=DBMSSOCN;Initial Catalog=bDatabase;User ID=[username];Password=[password]"

您甚至可能不需要实例名称 - 如果这是您的默认实例,请尝试以下操作:

"Data Source=#.#.#.#,1433;Network Library=DBMSSOCN;Initial Catalog=bDatabase;User ID=[username];Password=[password]"

【讨论】:

这些都不起作用。当我在 Management Studio 中连接时,我使用服务器名称 DC3\POS,这有关系吗? 如果 DC3 是您的服务器名称,您也可以尝试“Data Source=DC3\POS;Initial Catalog=bDatabase;User ID=[username];Password=[password]”。 这是一个远程服务器。不幸的是,这行不通。【参考方案2】:

一个好方法是创建一个空文本文件,将其重命名为connection.udl,双击它 -> 一个“数据链接属性”对话框打开:

填写所有内容并按测试连接直到它工作。然后按确定

之后.udl 文件将包含您的连接字符串。

【讨论】:

【参考方案3】:

代替

conn.ConnectionString = "Data Source=#.#.#.#\\DC3\\POS,1433;Network Library=DBMSSOCN;Initial Catalog=bDatabase;User ID=[username];Password=[password]";

试试

conn.ConnectionString = @"Data Source=#.#.#.#\DC3;Initial Catalog=bDatabase;User ID=[username];Password=[password]";

1433 是默认端口,可以安全地省略。 如果使用 IP 地址,可以省略 DBMSSOCN。

我认为您的问题是您的实例名称。 AFAIK,实例名称不包含 '\' 字符,所以“\DC3\POS”对我来说似乎是错误的。

编辑:确认,是实例字符串。不能包含反斜杠。

来源:https://technet.microsoft.com/en-us/library/ms143744(v=sql.90).aspx

" 实例名称不区分大小写。

实例名称不能包含术语 Default、MSSQLServer 或其他保留关键字。如果在实例名称中使用保留关键字,则会发生错误。

实例名称不得超过 16 个字符。

实例名称中的第一个字符必须是字母或下划线 (_)。可接受的字母是 Unicode 标准 2.0 定义的字母,包括拉丁字符 a-z 和 A-Z,以及来自其他语言的字母字符。

后续字符可以是 Unicode 标准 2.0 定义的字母、基本拉丁文或其他国家文字中的十进制数字、美元符号 ($) 或下划线 (_)。

实例名称中不允许嵌入其他特殊字符的空格,反斜杠()、逗号(,)、冒号(:)、分号(;)、单引号(')、和号(& )、数字符号 (#) 或 at 符号 (@)。"

【讨论】:

感谢帮助。不幸的是,我得到了错误:A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified) 感谢您的解释。我试过了:conn.ConnectionString = @"Data Source=#.#.#.#\DC3;Initial Catalog=bDatabase;User ID=[username];Password=[password]";conn.ConnectionString = @"Data Source=#.#.#.#\POS;Initial Catalog=bDatabase;User ID=[username];Password=[password]"; 都不起作用.. 嗯.. 您可能还想检查您的服务器上是否启用了远程连接。 (例如blogs.msdn.microsoft.com/walzenbach/2010/04/14/…) 或者服务器上正在运行SQL Server浏览器服务。 @DennisZiegan 正如我上面的问题所述,远程连接已启用。

以上是关于无法将 C# 应用程序连接到 MSSQL的主要内容,如果未能解决你的问题,请参考以下文章

通过 *** 将 PHP 应用程序连接到 MSSQL 时应该考虑啥?

将 JDBC 驱动程序连接到 MSSQL 数据库时出现问题

如何将 Weka 连接到 MSSQL 服务器

无法连接到 docker 托管的 MSSQL

Android - 关于使用 jdbc 连接到 MSSQL 的 classnotfound

无法使用 Python 连接到 MSSQL Server 数据库