无法将C#与SQL Server连接

时间:2019-04-27 11:47:46

标签: c# sql-server docker parallels

我正在尝试编写一个与SQL Server数据库进行交互的程序。我在Mac上的Parallels上使用C#编程,并且SQL Server通过Docker运行。

但是我无法连接。每次尝试时,我都会遇到相同的错误。

我已经尝试通过以下方式允许在SQL Server上进行远程访问:

EXEC sp_configure 'remote access', 1 ;  
GO  
RECONFIGURE ;  
GO 

但这不能解决我的问题。

这是我的C#代码:

主班

Database database;

public Form1()
{
    InitializeComponent();
    database = new Database("localhost\\MSSQLSERVER", "user1", "topsecret", "master"); // \
}

private void connect_button_Click(object sender, EventArgs e)
{
    database.Connect();
}

数据库类:

class Database
{
    SqlConnectionStringBuilder builder;
    SqlConnection connection;

    public Database(string source, string userid, string password, string initialcatalog){
        this.builder = new SqlConnectionStringBuilder();
        this.builder.DataSource = source;
        this.builder.UserID = userid;
        this.builder.Password = password;
        this.builder.InitialCatalog = initialcatalog;
    }

    public void Connect()
    {
        try 
        {
            // Connect to SQL
            Console.WriteLine("Connecting to SQL Server ... ");
            this.connection = new SqlConnection(this.builder.ConnectionString);
            connection.Open();
            Console.WriteLine("Connected");
        }
        catch(SqlException sqle)
        {
            Console.WriteLine(sqle.Message);
        }
    }
}

我总是收到此错误:

  

连接到SQL Server时与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称正确,并且SQL Server允许远程连接。 (提供者:SQL网络接口,错误:25-连接字符串无效)

2 个答案:

答案 0 :(得分:1)

MSSQLSERVER是计算机上未命名的默认实例的实例名称-您绝对不能在连接字符串中使用该实例。

相反,请尝试以下代码行:

database = new Database("localhost", "user1", "topsecret", "master");

只需指定没有明确的实例名称-仅需为当前计算机使用localhost(或(local).)即可,这就是您所需要的!

答案 1 :(得分:0)

这是Parallels的问题,因为Paralles无法访问本地主机。因此,我必须像这样在Visual Studio中的Parallels中定义IP:

database = new Database("10.211.55.2", "user1", "topsecret", "Time");