Возникли проблемы при подключении к файлу базы данных SQL Server. Что я делаю неправильно? - PullRequest
0 голосов
/ 29 июня 2018

Итак, у меня есть небольшой (и правильный) .MDF файл базы данных (SQL Server). Однако, когда я пытаюсь получить к нему доступ (строка 32 здесь ) или меньший контекст здесь ...

private void loadDataBaseButton_Click(object sender, EventArgs e)
{
    DialogResult result = openFileDialog1.ShowDialog();

    if (result == DialogResult.OK)
    {
        string databasePath = openFileDialog1.InitialDirectory + openFileDialog1.FileName;
        //SqlConnection dataBaseConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename={0};Integrated Security=True;Connect Timeout=30;User Instance=True");
        SqlConnection dataBaseConnection = new SqlConnection(string.Format(@"Data Source=.\SQLEXPRESS;AttachDbFilename={0};Integrated Security=True;Connect Timeout=30;User Instance=True", databasePath));

        try
        {
            dataBaseConnection.Open();
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}

Однако это вызывает исключение. Конкретно это

Ошибка 26 - Ошибка при поиске указанного сервера / экземпляра

При установке произошла ошибка сети или экземпляра соединение с SQL Server. Сервер не был найден или не был доступны. Убедитесь, что имя экземпляра правильное и что SQL Server настроен для разрешения удаленных подключений. (поставщик: сеть SQL Интерфейсы, ошибка: 26 - Ошибка при поиске указанного сервера / экземпляра)

Файл .MDF действителен, и все остальное, насколько мне известно, кажется проверенным. Как мне это исправить?

Ответы [ 3 ]

0 голосов
/ 29 июня 2018

Я полагаю, что если вы пытаетесь подключиться к «SQLEXPRESS», это может означать, что вы используете SQL Server Express локально и подключаете базу данных

Мне удалось успешно получить доступ к файлам MDD localdb с помощью строки подключения, подобной этой:

connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\MyDBFile.mdf;Integrated Security=True" providerName="System.Data.SqlClient"

Вы также должны убедиться, что файл находится в ожидаемом «DataDirectory».

0 голосов
/ 29 июня 2018

Если вы используете

Пользовательский экземпляр = true

вы должны использовать именованные каналы, чтобы ваше соединение изменилось с:

.\SQLEXPRESS

до

.\\SQLEXPRESS

Сетевой протокол для пользовательских экземпляров должен быть локальным именованным каналом. Пользовательский экземпляр не может быть запущен на удаленном экземпляре SQL Server, и вход в SQL Server не разрешен.

SQL-сервер-экспресс-пользовательские экземпляры

0 голосов
/ 29 июня 2018

В вашем коде проблема в строке подключения.

connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-WebApplication1-20180630124430.mdf;Initial Catalog=aspnet-WebApplication1-20180630124430;Integrated Security=True"

это правильная строка подключения, если вы используете прикрепленный файл .mdf. если вы подключаетесь к серверу sql, тогда строка подключения будет

data source=DHARMESH-PC;initial catalog=AdventureWorks;user id=sa;password=sa123

Надеюсь, это поможет вам

Спасибо

Обновление: -

DialogResult result = openFileDialog1.ShowDialog();

        if (result == DialogResult.OK)
        {
            string databasePath = openFileDialog1.InitialDirectory + openFileDialog1.FileName;
            string dbname = openFileDialog1.FileName.Split('.')[0];
            //SqlConnection dataBaseConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename={0};Integrated Security=True;Connect Timeout=30;User Instance=True");
            string connection = @"Data Source=(LocalDb)\v11.0;AttachDbFilename=" + databasePath + ";Initial Catalog=" + dbname + ";Integrated Security=True";
            SqlConnection dataBaseConnection = new SqlConnection(connection);

            try
            {
                dataBaseConnection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

Я обновил ваш код.

Вы должны выбрать только файл MDF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...