2013-01-24 88 views
4

我試圖檢查(在.net c#中)如果我能夠連接到SQL服務器。但是,無論何時我在連接字符串中指定實例,我都無法再連接。 :具有實例參數的SQL連接字符串

這工作:

builder.ConnectionString = "Server=DLS-534;user id=sa;password=Mypassword;initial catalog=master"; 

這不起作用:

builder.ConnectionString = "Server=DLS-534\\SQL_2008_R2_DEV;user id=sa;password=Mypassword;initial catalog=master"; 

爲什麼不這項工作???我需要能夠連接到特定的實例,因爲用戶可能有幾個dbs。

我全碼:

  SqlConnectionStringBuilder builder = 
       new SqlConnectionStringBuilder(); 

builder.ConnectionString = "Server=DLS-534\\SQL_2008_R2_DEV;user id=sa;password=Mypassword;initial catalog=master"; 

      using (var connection = new SqlConnection(builder.ConnectionString)) 
      { 
       try 
       { 
        connection.Open(); 
        return true; 
       } 
       catch (SqlException) 
       { 
        return false; 
       } 
      } 
+3

你得到的確切錯誤信息是什麼? –

回答

4

我的情況下工作代碼:

const string connStringWork = "Data Source=server\\instance;Initial Catalog=db;Integrated Security=True;Application Name=ЦС"; 

using (SqlConnection conn = new SqlConnection(connStringWork)) 
{ 

} 
0

好吧,你編輯你的問題......

- 忽略 ---

您正在分配兩個位置的連接字符串:

  1. new SqlConnectionStringBuilder(GetConnectionString());
  2. builder.ConnectionString = "..."

是什麼GetConnectionString()辦?如果用連接字符串替換它並忽略第二個位置,該怎麼辦?

- 年底忽略 -

除此之外,這裏是互聯網上的資源來查找你需要的連接字符串:ConnectionStrings.com

選擇你的數據庫,找到你的字符串。如果你的字符串與它們的格式相同,那麼你的參數肯定有問題。

0

我想你忘了把值賦給你的connString。

SqlConnectionStringBuilder builder = 
        new SqlConnectionStringBuilder(GetConnectionString()); 

    builder.ConnectionString = "Server=DLS-534\\SQL_2008_R2_DEV;user id=sa;password=Mypassword;initial catalog=master"; 

connString = builder; 
       using (var connection = new SqlConnection(connString)) 
       { 
        try 
        { 
         connection.Open(); 
         return true; 
        } 
        catch (SqlException) 
        { 
         return false; 
        } 
       } 
0
builder.ConnectionString = @"Server=DLS-534\SQL_2008_R2_DEV;user id=sa;password=Mypassword;initial catalog 

用@符號來逃避\

0

我覺得這與SQL Server是您的系統上安裝的方式做。我相信有可能以不需要實例名稱的方式安裝它(如果包含則不會起作用)。

因此,根據您如何安裝SQL Server,您可能需要提供一個實例名稱,或者您可能不需要。

如果您不確定或無法控制安裝方法,那麼我會首先嚐試使用實例名稱(例如:Server=localhost\SQLServer2016Express),如果它作爲回退失敗嘗試連接時沒有實例名稱(僅連接到僅限主機名稱)例如:Server=localhost