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


93

簡単なC#アプリケーションを開発していますが、これを知りたいのです。アプリケーションをPCのSQL Serverに接続すると、接続文字列(サーバー名、パスワードなど)はわかりますが、別のアプリケーションに接続すると、 PC、SQL Serverの接続文字列は異なります。接続できるデフォルトのアカウントが付属しているSQL Serverの共通アカウントはありますか?saSQL Serverのアカウントについて聞いたことがありsaますか。


5
既定のアカウントのユーザー名とパスワードを使用して、SQL Serverへのアクセスや、そのための接続の種類をセットアップする必要はありません。
jordanhill123 2013年

4
SASQLサーバーのsys_admin役割の平均
Elshan 2013年

2
SQL Server認証の代わりにWindows認証を使用できますか?これにより、ユーザーIDとパスワードを完全に使用する必要がなくなります。
Philip Sheard 2013年

回答:


127

.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();

docを参照してください。


1
この形式を使用してドメインユーザーを使用するにはどうすればよいですか?使用すると赤い下線が表示され続けuser id=Domain\Unameます。これは無効なエスケープ文字と関係があると思いますが、どうすればよいですか。
Wairimu Murigi、2016

1
@Wairimu Murigiバックスラッシュをエスケープする必要があります。つまり、ユーザーid = Domain \\ Uname
John Hartley

1
@イタチ:ネクロポストをごめんね。SQLCMDを使用して、これをWindowsコマンドラインに入力しますか?
MSIS

1
パスワードに;文字が含まれている
Kiquenet

1
@Kiquenet一重引用符または二重引用符でそれをラップしてみてください。これを確認てください。
イタチ

29

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

例えば:

    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オブジェクトプロパティで設定された値によって定義されることに注意してください。

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

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

SQL Serverのデフォルトのユーザーについて、saは「システム管理者」を意味し、そのパスワードはSQL Serverのバージョンによって異なります。このページでは、パスワードの変化を確認できます。

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

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

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

あなたは使ってログインすることができSA SQL Serverデータベース・マネージャーの開始時に、このログイン画面でユーザー。この画像のように:

ログイン例


15

.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();

11

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

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

8

これらは、別のマシン上のSQL Serverに接続する際に気になることがたくさんあります。

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

SQLサーバーがデフォルトのインスタンスとして実行されていることがよくあります。つまり、ホスト名/ IPアドレスを指定するだけで、名前付きインスタンス(Sql Expressなど)として実行されている場合があります。このシナリオでは、hostname \ instance nameを指定する必要があります。


6

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

参考までに、データベースのセキュリティとロールは、今日でははるかに複雑になっています。Windowsベースの認証の詳細を調べたい場合があります。SQL Serverが構成されている場合、接続するための接続文字列にユーザー名/パスワードは必要ありません。変更する必要があるのはサーバーのマシン名だけです。もちろん、両方のマシンで同じ接続文字列を使用できます。両方に同じdb名が付いていることを前提とします。


1
saは、SQL Serverのsysadminアカウントです。SQLサーバー認証または混合モード認証でインストールされた場合は、saアカウントを設定する必要があります。今後の参考のために、SQLサーバー認証をオンにしてsaアカウントをインストールしなかった場合のsaアカウントの設定方法についてのガイドを以下に示します。
iCodeSometime 2017

6

サーバーがドメイン内にある場合はWindows認証、またはSQL認証を使用できます。Sa-SQLサーバー認証のrootアカウントであるシステム管理者です。ただし、クライアントを接続する場合に使用することは悪い習慣です。独自のアカウントを作成し、それらを使用してSQLに接続する必要があります。接続するたびに、アカウントログインパスワードデフォルトデータベースを設定します


6

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

SQL Server Management Studioのスクリーンショット

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


4

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

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

-2
"ConnectionString":{
  "Database_Name": "server=.;database=Database_Name;Integrated Security=true;"
},

これをお試しください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.