アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB2008express で SQLserver2000に接続しようとしています
フォーム上で ボタンを2つ作成し button1の記述では接続できるのですが
button2では接続できず タイムオーバーになります。
SqlConnectionの使い方など基本的な理解不足かと思いますが
お気づきの点あればお願いします。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim DATACNN As String
Dim DATAADO As ADODB.Connection

DATACNN = "DRIVER={SQL SERVER};" &
"SERVER=TESTSERVER;UID=sa;PWD=123;DATABASE=BD"
DATAADO = New ADODB.Connection
DATAADO.Open(DATACNN)
MsgBox("接続1OK")
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
Dim stConnectionString As String = String.Empty
stConnectionString &= "Data Source =TESTSERVER;"
stConnectionString &= "persist security info=True;"
stConnectionString &= "Database=BD;"
stConnectionString &= "user id=sa;"
stConnectionString &= "password=123;"

 Dim cSqlConnection As New
System.Data.SqlClient.SqlConnection(stConnectionString)

cSqlConnection.Open()  ’←タイムオーバーになります

MsgBox("接続2OK")
cSqlConnection.Close()
cSqlConnection.Dispose()
End Sub

A 回答 (2件)

>VB2008express で SQLserver2000に接続しようとしています



以下に引用している話があやしいと思いますけど。
--- 引用 ---
注意 ADO.NET 2.0 では、SQL Server 2000 以前のバージョンについて、共有メモリに対する Asynchronous コマンドをサポートしていません。 ただし、共有メモリの代わりに強制的に TCP を使用できます。 これには、接続文字列でサーバー名の前に tcp: を指定するか、または localhost を使用します。
--- 以上 ---
http://msdn.microsoft.com/ja-jp/library/vstudio/ …
より。ADO.NET 2.0はVB2005以降に対応するVersion。
    • good
    • 0
この回答へのお礼

回答ありがとうございます
サーバー名の前につけてみたところ、エラーメッセージの内容が
少し変わったものの接続できないことには変わりありませんでした。

しかしながらアドバイスを参考にもう少し調べてみたいと思います

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

ちなみにOSは XP SP3 です

お礼日時:2012/08/22 22:32

こんにちは。


情報が少し足りないのでほぼ全て推測になりますが、接続文字列の問題ではなく、ネットワークライブラリのプロトコルの問題ということはありませんか?
button1の記述はADOによるODBC接続で、button2の記述はADO.NET(ADOとは別物です)によるDataProvider接続をされていますが、それぞれ接続のプロトコルは何にされていますか?
例えば、ODBCは「名前付きパイプ」で接続しているが、DataProviderは「TCP/IP」とかだとサーバーで「TCP/IP」が無効になっていると後者は接続できません。
まずは、「サーバー ネットワーク ユーティリティ」(だったかな?)の「有効になっているプロトコル」で有効・無効や優先順位を確認されてみてはどうでしょうか?

この回答への補足

質問者です。いろいろと情報不足で申し訳ありません。

「サーバー ネットワーク ユーティリティ」を確認したところ 
名前付きパイプ、TCP/IPの
順で有効になっていました。また
「クライアント ネットワーク ユーティリティ」を確認したところ 
TCP/IP、名前付きパイプの順で有効になっていました。

質問内容の説明が前後しますが

VB2003でADO.NETを使いSQLserver2000に接続しているプログラムがあり、
そのプログラムを一旦別のPC(1)でVB2008expressへ自動変換し
DBの接続を含めてテストをしようとしています。

 
別のPC(1)でVB2008expでEXEファイルを作成し実行したのですが
DBの接続のところでエラー
 
VB2003のプログラムが使えている(接続できている)PCで
VB2008expのEXEファイルを実行したのですが同じくタイムアウトエラーになります

今回は そのデータベースの接続のところを抜き出しテストしているところです。

ファイヤーオールでのTCP/IPの設定(ポートの編集)も
サーバーの設定と同じポート番号になっております

VB2003で接続できているPCで、同じプログラムをVB2008expに自動変換したものを
実行しようとしたのですが接続ができなくなっている状況です
確認すべきところ 他にないでしょうか?

説明下手で申し訳ありませんが宜しくお願い致します。

補足日時:2012/08/20 22:38
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます
急ぎの回答を設定したのに関わらず 明日確認して
再度書き込みをしたいと思います。

取り急ぎ御礼まで。ありがとうございました。

お礼日時:2012/08/19 22:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!