6

SQLサーバーに接続できるかどうかを(.net c#で)確認しようとしています。ただし、接続文字列でインスタンスを指定すると、接続できなくなります。:

これは機能します:

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";

なぜこれが機能しないのですか?ユーザーが複数のデータベースを持っている可能性があるため、特定のインスタンスに接続できる必要があります。

私の完全なコード:

            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;
                }
            }
4

6 に答える 6

6

インスタンスを使用した私の作業コード:

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

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

}
于 2013-01-24T06:47:25.220 に答える
0

これは、システムでの SQL Server のセットアップ方法に関係していると思います。インスタンス名を必要としない方法でインストールすることは可能だと思います(むしろ、含まれていると機能しません)。

したがって、SQL Server のインストール方法によっては、インスタンス名を指定する必要がある場合と、指定する必要がない場合があります。

インストール方法がわからない、または制御できない場合は、最初にインスタンス名 (例: Server=localhost\SQLServer2016Express) で試し、フォールバックとして失敗した場合は、インスタンス名なしで接続を試みます (ホスト名のみに接続するだけです)。例: Server=localhost

于 2016-07-05T15:00:42.233 に答える
0
builder.ConnectionString = @"Server=DLS-534\SQL_2008_R2_DEV;user id=sa;password=Mypassword;initial catalog

@ 記号を使用して \ をエスケープします

于 2014-02-26T12:39:03.797 に答える
0

さて、あなたはあなたの質問を編集しました...

--無視---

2 つの場所に接続文字列を割り当てています。

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

何をしGetConnectionString()ますか?それを接続文字列に置き換えて、2 番目の場所を除外するとどうなるでしょうか。

--無視を終了--

それとは別に、必要な接続文字列を検索するためのインターネット上のリソースは次のとおりです: ConnectionStrings.com

データベースを選択して、文字列を見つけます。文字列がそこにあるのと同じ形式である場合、パラメーターに何か問題があるはずです。

于 2013-01-24T06:51:28.860 に答える
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;
                    }
                }
于 2013-01-24T06:57:02.273 に答える