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

时间:2016-11-22 14:47:22

标签: c# sql sql-server sql-server-2008

我正在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.)

这里有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

不确定为什么你有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]"

答案 1 :(得分:0)

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

Data Link Properties

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

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

答案 2 :(得分:0)

而不是

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 Standard 2.0定义的字母,Basic Latin或其他国家脚本的十进制数字,美元符号($)或下划线(_)。

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