none
SQLSever2005 Express へのConnection接続文字列について RRS feed

  • 質問

  • 以前MSDEに接続していたアプリケーションを、SQLSever2005Expressに接続するように変更したいのですが、SQLServer2005 Expressに接続するための文字列がわからなく困っています。どなたか解る方いらっしゃいましたらRESお願いします。

     

    ~現在の作業環境と設定~

     SQLSever側

       ・Sever名       「SOFT-SERVER」

       ・データベース名   「TEST」

       ・アクセスユーザー 「soft-user」

       ・パスワード     「aaa」

       ・ポート        静的ポートで「1433」

     

     プログラム側のConnectionString

       Provider = SQLOLEDB;

            Server = SOFT-SERVER;

            DataBase = TEST;

            user id = soft-user;  password=aaa;

     

    この状態の場合、一度ODBCよりシステムDSで、SOFT-SERVERへの接続を作成し、静的ポート「1433」を設定してやれば、以降はデータベースに接続できることを確認しました。

    (レジストリかどっかで値保持してるのかな…システムDS消しても繋がってたし…)

     

    しかし、このプログラムは不特定多数の人が使用するため、一台一台のパソコンにシステムDSを設定するのはよくないと思い、ConnectionStringでどうにかできないものかと検索をかけてみたのですが、静的ポートを設定してやる箇所が見つかりません。

    (自分の日本語読解力が足りないだけだとは思うのですが…)

     

    静的ポートの番号を設定してやるには、どのように記述すればういいのでしょうか?

     よろしくお願いします。

     

    ※開発環境はVisual Stdio 2003 で、型はADODBを使用しています。

    2007年5月11日 8:48

回答

  • ジープさん、こんにちは。

    普通は SqlClient.SqlConnection を使って、Data Source=192.168.0.1,1433; ではないでしょうか。

    型はADODBを使用しています。

    COM を使うなんてことはやめた方がよいです。
    2007年5月11日 9:22

すべての返信

  • ジープさん、こんにちは。

    普通は SqlClient.SqlConnection を使って、Data Source=192.168.0.1,1433; ではないでしょうか。

    型はADODBを使用しています。

    COM を使うなんてことはやめた方がよいです。
    2007年5月11日 9:22
  • これなんていいと思います。

     

    TCP/IP 以外のプロトコルを使用すると 1433 以外のポートで SQL Server に接続できない

    http://support.microsoft.com/kb/307645/ja

     

    'Server=' と 'Data Source=' は同じ意味です。

    2007年5月11日 11:37
  • じゃんぬねっとさん、踊☆男さん、回答ありがとうございます。

     

    SqlCliantに変更したところ、接続できることを確認しました。

    やっぱCOMだめなんですかね…orz

     

    また何かありましたらよろしくお願いしたしますorz

     

    ~以下、解決時のソースコード~

     SQLSever側

       ・Sever名       「SOFT-SERVER」

       ・データベース名   「TEST」

       ・アクセスユーザー 「soft-user」

       ・パスワード     「aaa」

       ・ポート        静的ポートで「1433」

     

     ~ソース~

     Dim m_SqlCliant as system.Data.SqlClient.SqlConnection

     

       m_SqlCliant.ConnectionString = "Network Library=dbmssocn; " & _

                                                               "Data Source=SOFT-SERVER, 1433; " & _

                                                               "DataBase=TEST; " & _

                                                               "User ID=soft-user; password=aaa;"

      

    2007年5月14日 2:34
  •  ジープ さんからの引用
    SqlCliantに変更したところ、接続できることを確認しました。やっぱCOMだめなんですかね…orz

    大雑把にいえば CLR と相性がよくないに尽きるですが。
    一応参照カウントの面倒を見なくてはいけませんし。

    アップグレード系の仕事だとしても、結局 VB6 と同じコードが使えません。
    ADODB から SqlConnection に置き換える作業の方がまだ工数が少なくて済むと思います。
    2007年5月14日 4:06
  •  じゃんぬねっと さんからの引用

    一応参照カウントの面倒を見なくてはいけませんし。

    みたいですね…ヘルプ見たけど件数情報もってないんですね(・ω・`)

    自分でループしてカウントするか、Whileでまわすしかないのか…orz

    接続方法もだいぶ違うので、データベースひっぱってくるの大変そうですね(;´Д`)

    んー…時間かかりそうだ…orz

     

     じゃんぬねっと さんからの引用

    アップグレード系の仕事だとしても、結局 VB6 と同じコードが使えません。
    ADODB から SqlConnection に置き換える作業の方がまだ工数が少なくて済むと思います。


    以前VB掲示板でも質問していたアプリケーションの接続切り替えのみです(・ω・)

    開発自体は.netなんですけど、作ったアプリをフロア全体で使うので、ADO.net使おうにも.NetFramework 2.0入れてないパソコンが多すぎて使えず…orz

    アプリ自体は出来ていたんですがね(ノ∀`)

     

    なにはともあれ別作業入ったのでまたしばらく封印です…orz

     

    2007年5月18日 1:12
  •  ジープ さんからの引用
    自分でループしてカウントするか、Whileでまわすしかないのか…orz

    ループで回すといのはダメですね。
    普通はローカル処理につき、それぞれ 1 回しか参照されないので、
    制御フローさえわかっていれば、使ったら即デクリメントするで良いと思います。

    開発自体は.netなんですけど、作ったアプリをフロア全体で使うので、ADO.net使おうにも.NetFramework 2.0入れてないパソコンが多すぎて使えず…orz

    もしかして、.NET アプリケーションではないのですか?
    仮に VB6 だとしたら、VB6 は COM ベースの言語なので参照カウントは気にする必要がないですね。

    接続先の DBMS の切り替えだけであれば、私の先の回答は見当違いになってしまいます...
    2007年5月18日 2:41
  •  じゃんぬねっと さんからの引用

    ループで回すといのはダメですね。
    普通はローカル処理につき、それぞれ 1 回しか参照されないので、
    制御フローさえわかっていれば、使ったら即デクリメントするで良いと思います。

    あれ?Recoderで取得データ数を返す関数ありましたっけ?

    見た感じ列数を戻す関数しかなくて、ループさせるのにはRecoderをNextで移行させてやる、くらいしかわからなかったのですが…

    プログラム上の都合で件数わからないとちょっと辛いところがあるので、死活問題ですw

     

     じゃんぬねっと さんからの引用

    もしかして、.NET アプリケーションではないのですか?
    仮に VB6 だとしたら、VB6 は COM ベースの言語なので参照カウントは気にする必要がないですね。
    接続先の DBMS の切り替えだけであれば、私の先の回答は見当違いになってしまいます...

     

    んーと…開発環境は.Netです。

    現在開発してるプログラムは、会社全体のフロアで使うツールなのですが、.開発部なのでNetFrameWork 2.0を入れられるパソコンと入れられないパソコンがありまして…

    そのため、ADO.netが使えず、今まではMSDE接続だったので、ADODBを使っていたのです。

    しかしMSDE接続で開発してる途中で、MSDEがおかしくなることが何回かありまして…

    (アクセス拒否される+なぜかMasterが開けなくなる…)

    それならSQLServerExepressでちょっと試してみようか、ということになりました。


     とりあえずサーバーの切り替えだけやりたかったのですが…

    ConnectionStringで静的ポートの設定がわからなく、ここに投函したしだいです(・ω・`)

    議題投函時に説明不足でしたね…ごめんなさいorz

    2007年5月18日 3:01
  •  ジープ さんからの引用
    あれ?Recoderで取得データ数を返す関数ありましたっけ?
    見た感じ列数を戻す関数しかなくて、ループさせるのにはRecoderをNextで移行させてやる、くらいしかわからなかったのですが…
    プログラム上の都合で件数わからないとちょっと辛いところがあるので、死活問題ですw

    えーっと、これは .NET CLR で COM を扱う場合によく問題になる 「COM の参照カウント」 のお話です。

    んーと…開発環境は.Netです。
    現在開発してるプログラムは、会社全体のフロアで使うツールなのですが、.開発部なのでNetFrameWork 2.0を入れられるパソコンと入れられないパソコンがありまして…
    そのため、ADO.netが使えず、今まではMSDE接続だったので、ADODBを使っていたのです。
    開発自体は.netなんですけど、作ったアプリをフロア全体で使うので、ADO.net使おうにも.NetFramework 2.0入れてないパソコンが多すぎて使えず…orz

    これは、ちょっとおかしいと思います。
    .NET でアプリケーションを動かすには、そのバージョンに合った .NET Framework が必須となります。
    ADO.NET を使わないから、.NET Framework が必要にならないなんてことにはなりません。

    何か、会話がかみ合っていないような気がしていましたが、
    ひょっとして、私がものすごい勘違いをしているのでしょうか...? (;´ω`)
    2007年5月18日 5:38
  • なぜか引用フォームが起動しない…orz

     

    >えーっと、これは .NET CLR で COM を扱う場合によく問題になる 「COM の参照カウント」 のお話です。

    とゆーことはやっぱSqlCliantにはないんですね…COMとかCLRの言葉が今ひとつ飲み込めてないので頭こんがらがる…

    頭悪いコでごめんなさい_|\○_

     

    >.NET でアプリケーションを動かすには、そのバージョンに合った .NET Framework が必須となります。
      >ADO.NET を使わないから、.NET Framework が必要にならないなんてことにはなりません。

     

    ちょっといろいろ背景がありまして…

     

    ADO.netはバージョン2.0 からです。

    VisualStdio.net 2005 以降の開発環境をインスコしている人であれば問題ないのですが、フロア内にはOfficeだけの人もいますので…

    その場合は、Framework のみインストールすれば問題ないのですがまた問題がありまして…。

    1.1をインストールするのは比較的容易なのですが、FrameWork2.0をインストールするには、WindowsのSP2が当たってないとだめなのです。

     

    SP2とFramework2.0をインストールするのに必要な時間は1H以上。そして対応しなければならないパソコンがン十台…

    さらにVS以外の開発ツールを入れてるパソコンにSP2を当てると、その開発ツールのコンパイル内容が変わってしまうのもあるとかないとか…

     

    それらを全部含めて、上司と話した結果、ADO.netは見送って、ADODBにしよう、となったわけです…。

     

    なんが長ったらしい上に内輪ネタでごめんなさいorz

    2007年5月18日 6:10
  • 何度もすみません。

     ジープ さんからの引用
    ちょっといろいろ背景がありまして…

    ADO.netはバージョン2.0 からです。
    VisualStdio.net 2005 以降の開発環境をインスコしている人であれば問題ないのですが、フロア内にはOfficeだけの人もいますので…

    これはどういう意味でしょうか?
    すでに .NET Framework 1.x のアプリケーションがそこにあるというお話でしょうか?

    それらを全部含めて、上司と話した結果、ADO.netは見送って、ADODBにしよう、となったわけです…

    伝わっていない... のでしょうか。もしくは、言葉が足らずに私が勘違いをしているか...

    同じことを書くほかないのですが、.NET アプリケーションを動作させる時点で .NET Framework は必要です。
    ADO.NET を使わず ADODB で開発したとしても、.NET のアセンブリである以上 .NET Framework は必要です。
    1. "開発環境は .NET なのです"
    2. ".NET Framework は使えないので ADO.NET ではなく ADODB を使います"
    にはなりえません。
    どちらかに誤りがございます。開発言語は .NET なのですよね?

    すでに .NET Framework 1.x のアプリケーションがあるというならば、
    1.1 時代の ADO.NET フレームワークを使えば良いお話ですよね。
    2007年5月18日 6:58
  • また引用使えないし…(;´Д`)

     

    >すでに .NET Framework 1.x のアプリケーションがそこにあるというお話でしょうか?

     

    あー、主語抜けてました…

    現在自分が作ってるアプリケーションを使うパソコンは、会社のフロアにあるパソコン全部という意味です。

    (ちなみにフロアには100台↑あります)

    全てのパソコンが開発用パソコンではないため、VisualStdioが入っていないパソコンもたくさんあります。

    .Net Framework が必要なパソコンに関しては、その都度インストールする、という手はずをとっています。

    今現在、ほとんどのパソコンにFramework 1.1がインストールされていますが、Framework 2.0に関しては数台くらいです。

     

     

    また自分が調べた結果、ADO.netを使用して開発を行うには、Visual Stdio 2005以降で…ということでした。

    またADO.netを使用して、アプリケーションを作成した場合、.Net Framework 2.0 をインストールしていないと使えなかったんです。

    (2005でADO.netを使用してアプリ作成→2003をインスコしているマシンで起動→Framework 2.0をインスコしないと使えない)

    もしかして.NetFramework 1.1でも使用できるADO.netってあるんでしょうか?

    そしたらあたしの知識不足ですね(=ω=;)ゞ

     

     

     

    2007年5月18日 7:17
  •  ジープ さんからの引用
    (2005でADO.netを使用してアプリ作成→2003をインスコしているマシンで起動→Framework 2.0をインスコしないと使えない)

    先にも書きましたとおり、アセンブリと同一のバージョンの .NET Framework が必要です。

    もしかして.NetFramework 1.1でも使用できるADO.netってあるんでしょうか?

    ADO.NET テクロノジは .NET Framework の中のフレームワークのひとつです。
    ADO.NET テクノロジは、.NET Framework 1.0 時代から含まれます。

    ただ、2.0 で開発したものを 1.1 で動かそうとしていることが間違いなのです。
    ひとつ前の投稿の最後に書いたとおりで、1.1 の ADO.NET を使えば良いです。

    もっとわかりやすく言えば、「Visual Studio 2003 で開発すれば良いだけのこと」 です。
    2007年5月18日 7:30
  •  じゃんぬねっと さんからの引用
    ADO.NET テクロノジは .NET Framework の中のフレームワークのひとつです。
    ADO.NET テクノロジは、.NET Framework 1.0 時代から含まれます。

    ただ、2.0 で開発したものを 1.1 で動かそうとしていることが間違いなのです。
    ひとつ前の投稿の最後に書いたとおりで、1.1 の ADO.NET を使えば良いです。

    もっとわかりやすく言えば、「Visual Studio 2003 で開発すれば良いだけのこと」 です。

     

    …ん?(=ω=;)

    ってことは.NetFramework 1.1の方にもADO.netあるんですか…

    ネットで調べてもなかったので、てっきりないものだと…_| ̄|○

    (とんだHPが全て.NetFramework 2.0からでした…)

    いまちみっと新規プロジェクトでみてみましたが、OleDBDataAdapterがそれにあたるんですかね…?

    2007年5月18日 7:51
  • まず、こちらのリンクであらましを見て頂いた方が良さそうです。 まず日付を見てください。
    2007年5月18日 12:14

  • クライアント側のネットワークプロトコルの設定を無視してやりたいのなら,
    サーバー名\SQLEXPRESS のところを,
    コロンを後ろに付ける形でプロトコル指定を前に付けて,後ろに,カンマに続けて Port番号指定する形で,


      tcp:サーバー名\SQLEXPRESS, 1433

      tcp:192.168.x.x\SQLEXPRESS, 1433


    などとやれば,ADOでも接続できるんじゃないかと思います。


    で,あえてADOでやるのなら,
    クライアント側にSQL Native Clientをインストール可能なら,
    Provider=SQLOLEDB でなく
    Provider=SQLNCLI;DataTypeCompatibility=80 の方がいいんですどね。
    それならADO&SQLServer2005の組み合わせでも
    一応OKな筈なんですけどね。


    でも,
    .NETアプリからなら,あえてADOという選択肢はないでしょうね。
    ただ,ADO.NET 2.0 を使えないとしたら微妙かも。

    2007年5月19日 4:25
  • じゃんぬねっとさん>

    Σ(゜Д゜;)

    あったんですね…ADO.netの2003…

    あたし、こっちみてました…_| ̄|○ノ【http://msdn2.microsoft.com/ja-jp/library/e80y5yhx(VS.80).aspx

    これで、「あぁ…Framework2.0しか使えんのか…」とあきらめてました(・ω・`)

    とりあえず、ADO.netの方がパフォーマンスかなりよさげなんで、がんばってコード変更していきたいとおもいまス。

     

     稍丼 さん>

    ぉ、そんなやりかたもあるのですか。

    勉強になります(・∀・)

    選択肢がもうちょい増えそうですね…

    いろいろ模索してがんばりたいとおもいますo(`ω´*)o

     

     

    レスありがとうございました(・∀・)ノ

    2007年5月21日 0:37