Не удается подключиться к C # с SQL Server - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь написать программу, которая взаимодействует с моей базой данных SQL Server.Я программирую на C # в Parallels на моем Mac, а 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 ]

1 голос
/ 27 апреля 2019

MSSQLSERVER - это имя экземпляра безымянного, по умолчанию экземпляра на вашем компьютере - вы не должны использовать это в строке подключения.

Вместопопробуйте эту строку кода:

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

Просто укажите вообще нет явного имени экземпляра - просто localhost (или (local), или .) для текущего компьютера- это все, что вам нужно!

0 голосов
/ 29 апреля 2019

Это была проблема с Parallels, потому что Paralles не может получить доступ к localhost.Поэтому мне пришлось определить IP-адрес из Parallels в Visual Studio следующим образом:

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