1

SQL Server 2005に接続するアプリケーションを構築しています。現在、Windows認証を使用していますが、SQL認証に切り替える必要があります(混合認証とも呼ばれます) 。私の現在の接続文字列は次のとおりです。SQL Server 2005のSQL認証の接続文字列

Windows認証のためだが、SQLのために、私は考えてい
"Data Source=LOCALHOST;Initial Catalog={0};Integrated Security=SSPI" 

"Data Source=LOCALHOST;Initial Catalog={0};user id={1};password={2}" 

はこれが正しい方法ですか? {0}のデータベースの名前は、

  • {1} {2}私はSQLに切り替えていたパスワード
  • であるである

    • :コードは、と仮定し私はリモートサーバー上のSQL Serverインスタンスに接続することを考えているからです。これを行う正しい方法はSQL認証ですか、「LOCALHOST」が現在あるIPを入力するだけですか?

      ありがとうございます!

      更新日:ありがとう、皆さん、ありがとうございました!彼らはすばらしくてとても助かりました。私は「受け入れられた答え」をどの賞に授与するかを決めることすらできませんが、岩が詰まっているので、すべてを投票しました。再度、感謝します!

  • +0

    @Joelタグを固定していただきありがとうございます –

    答えて

    6

    あなたは正しい方法で行きますが、私はConnection Stringsを見ていると、ここの答えよりもはるかに役立つかもしれないと思います。

    +0

    それは私が探していたウェブサイトでした!このすべての情報を持っている素晴らしいサイトがあったと思いましたが、それが何かを覚えていない - 非常に欺瞞的な名前のように見えました! –

    1

    はい、これはあなたの言ったとおりに動作します。

    "データソース= 11.22.33.44;初期カタログ= {0};ユーザID = {1};パスワード= {2}"

    +0

    ありがとうございます! –

    2

    あなたはまた、代わりに代わり "ユーザーID" とPWDのUIDを使用することができ

    LOCALHOSTの代わりに、リモートマシンのIPアドレスまたはDNS名を使用します。リモートマシンに複数のSQL Serverインスタンスが存在する場合は、データソースにインスタンスを指定する必要があります。 "データソース= 11.22.33.44 \ SQLEXPRESS"。

    +0

    ありがとうございました。 –

    2

    はそのためのアプリがあります:SqlConnectionStringBuilder

    SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder(); 
    scsb.DataSource = "LOCALHOST"; 
    scsb.InitialCatalog = ...; 
    scsb.IntegratedSecurity = false; 
    scsb.UserID = ...; 
    scsb.Password = ...; 
    
    SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder(); 
    scsb.DataSource = "LOCALHOST"; 
    scsb.InitialCatalog = ...; 
    scsb.IntegratedSecurity = true; 
    

    あなたはその後、ビルダーのConnectionStringプロパティから接続文字列を抽出することができます。この方法でエラーが発生することはなく、後でConnectTimeoutAsynchronousProcessingなどの他のプロパティを変更することができ、文字列の構文を覚える必要はありません。

    +0

    これは素晴らしいことですが、設定ファイルに設定値を抽出する処理が難しくなります。 – sfuqua

    +0

    @sfuqua:SCSBのコンストラクタが接続文字列を受け付けているので、実際はありません。構成設定conn文字列からSCSBを構築する場合は、プロセスのフォーマットも検証します。 –

    1

    ローカルサーバーとリモートサーバーの間に共通のActive Directoryドメインがない場合は、SQL認証が必要になると思います。ただし、の場合に共通のADSドメインがある場合は、–を使用することをお勧めします。そうしないと、共通のSQLアカウントを使用してパスワードを暗号化するか、それぞれに個別のSQLアカウントを作成する必要があります。データを複製する。

    初期カタログの設定には十分注意してください。その値がユーザー入力によって提供される場合、その値を保護するための適切な検証がない場合は、別のデータベースを攻撃しようとする可能性があります。申し訳ありませんが合唱団に説教している場合:-)。

    関連する問題