簡體   English   中英

連接到SQL Server數據庫文件時遇到問題。 我究竟做錯了什么?

[英]Having trouble connecting to a SQL Server database file. What am I doing wrong?

因此,我有了一個(有效的) .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文件有效,據我所知其他所有內容似乎.MDF簽出。 我該如何解決?

在您的代碼問題是連接字符串。

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

如果使用附加的.mdf文件,則這是當前連接字符串。 如果您連接到sql server,則連接字符串為

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文件。

我相信,如果您嘗試連接到“ SQLEXPRESS”,則意味着您正在本地運行SQL Server Express並附加數據庫

我已經能夠使用如下連接字符串成功訪問localdb MDF文件:

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

您還應該驗證文件是否在預期的“ DataDirectory”中。

如果您正在使用

用戶實例= true

您必須使用命名管道,以便您的連接將從:

.\SQLEXPRESS

.\\SQLEXPRESS

用戶實例的網絡協議必須是本地命名管道。 無法在SQL Server的遠程實例上啟動用戶實例,並且不允許SQL Server登錄。

sql-server-express-user-instances

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM