web-dev-qa-db-ja.com

SQL Serverの接続文字列を設定する方法?

私は簡単なC#アプリケーションを開発しています、私はこれを知りたいです:私が自分のPC上のSQL Serverに私のアプリケーションを接続するとき、私は接続文字列(サーバー名、パスワードなど)を知っていますPC、SQL Serverの接続文字列が異なります。 SQL Serverに接続可能な既定のアカウントが付属する共通のアカウントはありますか? SQL Serverのsaアカウントについて聞いたことがありますが、saとは何ですか?

71
Roshan

// .NET DataProvider - ユーザー名とパスワードによる標準接続

using System.Data.SqlClient;

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source=ServerName;" +
"Initial Catalog=DataBaseName;" +
"User id=UserName;" +
"Password=Secret;";
conn.Open();

// .NET DataProvider - 信頼できる接続

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source=ServerName;" +
"Initial Catalog=DataBaseName;" +
"Integrated Security=SSPI;";
conn.Open();
101
Itachi

実際には、接続文字列を作成するためにSqlConnectionStringBuilderクラスを使用できます。 接続文字列を作成するには、そのSqlConnectionStringBuilderからオブジェクトをインスタンス化し、DataBaseへの接続に使用するパラメータでそれらのプロパティを設定する必要があります。次の例に示すように、ConnectionStringオブジェクトのSqlConnectionStringBuilderプロパティから接続文字列を取得できます。

例えば:

    SqlConnectionStringBuilder sConnB = new SqlConnectionStringBuilder ()
    {
        DataSource = "ServerName",
        InitialCatalog = "DatabaseName",
        UserID = "UserName",
        Password = "UserPassword"
    }.ConnectionString

SqlConnection conn = new SqlConnection(sConnB.ConnectionString);

new演算子を使用して直接作成することもできます。

例えば:

SqlConnection conn = new SqlConnection(
    new SqlConnectionStringBuilder ()
    {
        DataSource = "ServerName",
        InitialCatalog = "DatabaseName",
        UserID = "UserName",
        Password = "UserPassword"
    }.ConnectionString
);

接続文字列を作成するために、さらにパラメータを追加できます。パラメータはSqlConnectionStringBuilderオブジェクトのプロパティに設定された値によって定義されることを忘れないでください。

また、添付のDBとMicrosoft Visual Studioの接続からデータベース接続文字列を取得できます。 DBを選択すると、プロパティパネルに接続文字列が表示されます。

SqlConnectionStringBuilderクラスのプロパティの完全なリストは、Microsoft MSDNサイトのこの ページに記載されています。

SQL Serverのデフォルトユーザーについては、saは "system-administrator"を意味し、そのパスワードはSQL Serverのバージョンによって異なります。この ページ では、パスワードがどのように変化するかを見ることができます。

SQL Server 2008/R2 Expressユーザー:saパスワード:[空白のパスワード - 接続する場合はフィールドを空白のままにしてください]

SQL Server 201x Expressユーザー:saパスワード:パスワード123

SQL Server 20xx Webまたは標準ユーザー:saパスワード:は、VDSが作成された時点の管理者またはrootユーザーのパスワードと同じです。プロビジョニング済み.

SQL Serverデータベースマネージャの起動時に、このログインウィンドウでsaユーザーでログインできます。この画像のように:

Log in example

16
CryogenicNeo

.NETデータプロバイダ - デフォルトの相対パス - 標準接続

 using System.Data.SqlClient;
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "User Id=UserName;" + 
 "Password=Secret;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;"conn.Open();

.NETデータプロバイダ - デフォルトの相対パス - 信頼できる接続

 using System.Data.SqlClient;
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "Integrated Security=true;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();

.NETデータプロバイダ - カスタム相対パス - 標準接続

using System.Data.SqlClient;
AppDomain.CurrentDomain.SetData(
"DataDirectory", "C:\MyPath\");
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "User Id=UserName;" + 
 "Password=Secret;" + 
"AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();  

.NETデータプロバイダ - カスタム相対パス - 信頼できる接続

 using System.Data.SqlClient;
 AppDomain.CurrentDomain.SetData(
 "DataDirectory", "C:\MyPath\");
 var conn = new SqlConnection();
 conn.ConnectionString = 
 "Data Source=.\SQLExpress;" + 
 "User Instance=true;" + 
 "Integrated Security=true;" + 
 "AttachDbFilename=|DataDirectory|DataBaseName.mdf;" conn.Open();
12
Hemlata Gehlot

他のマシン上のSQL Serverに接続するときに気をつけるべきことがいくつかあります。

  • マシンのホスト/ IPアドレス
  • 初期カタログ(データベース名)
  • 有効なユーザー名/パスワード

ほとんどの場合、SQL Serverはデフォルトのインスタンスとして実行されている可能性があります。つまり、単純にhostname/ip addressを指定できますが、名前付きインスタンスとして実行されているシナリオ(Sql Expressなど)が発生する可能性があります。このシナリオでは、hostname\instance nameを指定する必要があります。

7
scartag

次のように接続文字列を使用できます。データベース名を追加するだけで済みます。

string connetionString = "Data Source=.;Initial Catalog=DB name;Integrated Security=True;MultipleActiveResultSets=True";
5

データベースサーバーまたはDBAは、だれにでもサーバーのコンテンツに接続したり、その内容を変更したりすることを望んではいけないということを理解する必要があります。これがセキュリティアカウントの全目的です。単一のユーザー名/ pwdがどのマシンでも機能する場合は、何の保護も提供されません。あなたが聞いたことのある「sa」のことは、SQL Server 2005、2008、または2012では機能しません。ただし、以前のバージョンについてはよくわかりません。 SQL Serverの初期の頃には、デフォルトのユーザー名とpwdは以前はsa/saだったと思いますが、それはもはや当てはまりません。

参考までに、データベースのセキュリティと役割は、現在でははるかに複雑になっています。 Windowsベースの認証の詳細を調べたいと思うかもしれません。 SQL Serverがそのために設定されている場合は、接続文字列に接続するのにusername/pwdは必要ありません。変更する必要があるのはサーバーのマシン名だけで、もちろん同じ接続文字列が両方のマシンで機能します。もちろん、両方とも同じdb名を持っています。

5
dotNET

サーバーがドメイン内にある場合は、Windows認証またはSql認証を使用できます。 Sa - システム管理者、SQLサーバー認証用のルートアカウントです。しかし、あなたのクライアントを接続するためにifを使うのは悪い習慣です。あなたはあなた自身のアカウントを作成し、あなたのSQLに接続するためにそれらを使うべきです。それぞれの接続で、 account login 、その password 、そしてデフォルトデータベースを設定します。接続する。

5
Alex

saは、デフォルトでSQL Serverに付属しているシステム管理者アカウントです。ご存じかもしれませんが、SQL Serverにログインするには2つの方法があります。

screen shot of SQL Server Management Studio

したがって、各シナリオに適した接続文字列(Windows認証、localdbなど)があります。接続文字列を作成するには、 https://msdn.Microsoft.com/ja-jp/library/jj653752(v=vs.110).aspx#sqlserver を使用します。これらはXMLタグです。 connectionStringの値が必要です

4
Menuka Ishan

単純にデータベースに接続できます...

uid=username;pwd=password;database=databasename;server=servername

例えば:

string connectionString = @"uid=spacecraftU1;pwd=Appolo11;
                            database=spacecraft_db;
                            server=DESKTOP-99K0FRS\\PRANEETHDB";
SqlConnection con = new SqlConnection(connectionString);
1

データベースに接続するだけです:

 uid=username;pwd=password;database=databasename;server=servername

例えば。:

string connectionString = @"uid=spacecraftU1;pwd=Appolo11;
                            database=spacecraft_db;
                            server=DESKTOP-99K0FRS\\PRANEETHDB";
SqlConnection con = new SqlConnection(connectionString);
0