[seasar-dotnet:2353] Re: QuillでのSQLServerの接続について

竹内学 [E-MAIL ADDRESS DELETED]
2014年 3月 28日 (金) 09:11:54 JST


竹内です。

APS.NET ではなくて、クラサバ・アプリなので、あまり参考にはならないかもしれませんが...

私の場合は、直接、設定ファイルに記述するのでは無くて IConnectionString を実装したクラスで接続文字列を生成する様にしております。
# やっぱり、パスワードが平文で記述されるのは抵抗があるので。

-- App.config --
  <quill>
    <dataSources>
      <dataSource name="DataSource">
        <provider>SqlServer</provider>

<connectionString>xxx.Helpers.ConnectionStringHelper</connectionString>
        <class>Seasar.Extension.Tx.Impl.TxDataSource</class>
      </dataSource>
    </dataSources>

    <configPath>App.dicon</configPath>

    <assemblys>
      <assembly>Seasar.DynamicProxy</assembly>
      <assembly>Seasar.Dao</assembly>
      <assembly>Seasar.Dxo</assembly>
      <assembly>Seasar.Windows</assembly>

      <!-- Microsoft SQL Server .NET Data Provider を使用する場合に必要です。 -->
      <!--<assembly>System.Data</assembly>-->
    </assemblys>
  </quill>

  <userSettings>
        <xxx.Properties.Settings>
              <setting name="DatabaseDataSource" serializeAs="String">
                    <value>localhost\SQLEXPRESS</value>
              </setting>
              <setting name="DatabasePort" serializeAs="String">
                    <value>1433</value>
              </setting>
              <setting name="DatabaseInitialCatalog" serializeAs="String">
                    <value>xxx</value>
              </setting>
              <setting name="DatabaseUserID" serializeAs="String">
                    <value>xxx</value>
              </setting>
              <setting name="DatabasePassword" serializeAs="String">
                    <value>xxx</value>
              </setting>
        </InventoryVerification.Properties.Settings>
    </userSettings>


-- ConnectionStringHelper.cs --
namespace xxx.Helpers {
    /// <summary>
    /// データベース接続文字列ヘルパー クラス
    /// </summary>
    public class ConnectionStringHelper: IConnectionString {

        /// <summary>        /// データベースへの接続文字列を取得する
        /// </summary>
        /// <returns>接続文字列</returns>
        public string GetConnectionString() {
            SqlConnectionStringBuilder builder = new
SqlConnectionStringBuilder();

            builder.ApplicationName = "xxx";
            builder.DataSource      = string.Format("tcp:{0},{1}",
Properties.Settings.Default.DatabaseDataSource,
Properties.Settings.Default.DatabasePort);
            builder.InitialCatalog  =
Properties.Settings.Default.DatabaseInitialCatalog;
            builder.UserID          =
Properties.Settings.Default.DatabaseUserID;
            builder.Password        =
DecryptPassword(Properties.Settings.Default.DatabasePassword);

            return builder.ConnectionString;
        }
}


これで生成される接続文字列は

Data Source=tcp:localhost\SQLEXPRESS,1433;Initial Catalog=xxx;User
ID=xxx;Password=xxx;Application Name=xxx

となっています。

ご参考までに。




2014年3月28日 2:22 kubo <dbflute @ gmail.com>:

> 久保(jflute)です
>
> 志水さん、こんにちは。
> DBFlute.NETご利用ありがとうございます。
>
> ちょっと.NET <http://xn--h9jep6j.NET>でSQLServerにつないでる環境が手元にないので、
> 見ただけでは合ってるかどうか不明なのですが、
> JDBCとか他からうまくいってるということは、
> もう Quill.config の書き方と考えるのが自然ですが...
>
> ポート番号って、指定しなくてもOKなんですよね?
> (以下のサイトを参考にしただけですが、
> 色々な書き方を試してみたいところですね)
> http://shiba-yan.hatenablog.jp/entry/20110103/1294060564
>
>
> # どなたか、.NETでSQLServerにDBアクセスされている方で、
> # 「接続文字列をこんな感じで書いてるよ」
> # みたいな情報ありましたらコメント頂けると助かります。
>
>
>
> 2014-03-27 19:38 GMT+09:00 志水正幸 <ie2m-smz @ asahi-net.or.jp>:
> > お世話になっております。
> > 志水と申します。
> >
> > ASP.NETで開発しているのですが、
> > ORACLE接続していたプロジェクトをSQLServer接続に変更しています。
> > しかし、どうにも接続できずエラーとなってしまい
> > すっかりハマってしまいましたOrz
> > 何がいけないのか、どなたかご指摘いただけたらと思います。。
> > 変更箇所はdataSources部分だけでいいと思ったのですが
> > ORACLEの場合は、Oracle.DataAccessのDLLの参照が必要でしたが、
> > SQLServerも何か必要なのでしょうか?
> >
> >
> > ちなみに以下の設定でクライアントから、dbfluteのバッチでテーブル生成でき
> > ます。
> > map:{
> > ; driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
> > ; url = jdbc:sqlserver://192.168.1.49:1433;databaseName=db_11;
> > ; schema = dbo
> > ; user = user11
> > ; password = passwd
> > ; propertiesMap = map:{includeSynonyms=true}
> > ; variousMap = map:{
> > ; objectTypeTargetList=list:{TABLE;VIEW;SYNONYM}
> > ; tableExceptList = list:{prefix:MLOG$_}
> > }
> > }
> > クライアントのAccessからODBC経由で接続もできました。
> > でも、心配なので念のためDBサーバ上のIISにアプリを設置して動作させて
> > みましたが、同じように接続エラーになりました。
> >
> >
> > 【環境】
> > 開発OS:Windows7 64bit
> > DBサーバ:Windows2008std
> >
> > .NET ASP C# FrameWork4.0
> > SqlServer2012
> > Quill(s2container.net-1.4.0)
> > dbflute-0.8.9.54
> >
> >
> > 【エラーメッセージ】
> > 場所 Seasar.Framework.Util.DataSourceUtil.GetConnection(IDataSource
> > dataSource)
> >
> > [NextException]
> > System.Data.DataException
> > コネクションのオープンに失敗しました。データベースは起動しているか?接続
> > 文字列、プロバイダの設定は正しいか?ご確認をお願いします。
> >
> > [NextNextException]
> > System.Data.SqlClient.SqlException
> > SQL Server への接続を確立しているときにネットワーク関連またはインスタン
> > ス固有のエラーが発生しました。サーバーが見つからないかアクセスできませ
> > ん。インスタン ス名が正しいこと、および SQL Server がリモート接続を許可
> > するように構成されていることを確認してください。 (provider: SQL Network
> > Interfaces, error: 26 - 指定されたサーバーまたはインスタンスの位置を特定
> > しているときにエラーが発生しました)
> > ErrorCode = -2146232060
> >
> >
> > 【Quill.configの接続文字列】
> > <dataSources>
> > <dataSource name="WebDS"> ←このデータソースを読んでいるのは確認済み
> > <provider>SqlServer</provider>
> > <connectionString>"Data
> > Source=192.168.1.49\MSSQLSERVER;database=db_11;User
> > ID=user11;Password=passwd"</connectionString>
> > <class>Seasar.Extension.Tx.Impl.TxDataSource</class>
> > </dataSource>
> > </dataSources>
> >
> > →"Server=192.168.1.49\MSSQLSERVER;Database=db_11;User
> > ID=user11;Password=passwd"
> >  ↑↑↑接続文字列もためしましたがダメでした↑↑↑
> >
> > →IntegratedSecurity=trueつけたらサポートされていないって怒られました。
> >
> > →192.168.1.49の後ろの「\」を「\\」でも試してみましたが同じエラーでした。
> >
> > <assemblys>
> > <assembly>Seasar</assembly>
> > <assembly>Seasar.Dao</assembly>
> > <!-- Oracle Data Provider for .NET を使用する場合に必要です。 -->
> > <!-- <assembly>Oracle.DataAccess, version=2.112.1.0, Culture=neutral,
> > PublicKeyToken=89b483f429c47342</assembly> -->
> > </assemblys>
> >
> >
> > _______________________________________________
> > seasar-dotnet mailing list
> > seasar-dotnet @ ml.seasar.org
> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
>


-- 
竹内 学 <mailto:mtakeuchi @ ailesys.co.jp>
株式会社エールシステム
〒384-0083 長野県小諸市大字市665-9
Phone: 0267-25-5990
Facsimile: 0267-26-1324
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-dotnet/attachments/20140328/5c306a05/attachment.html>


seasar-dotnet メーリングリストの案内