• 締切済み

リモート接続PCでviewのSELECT文がタイムアウト

リモート接続したPCでviewのSELECT文を実行すると、「タイムアウトしました、サーバが応答していません。」というエラーがでます。tableのSELECT文は実行できます。 ローカルPCでviewのSELECT文は問題なく処理できます。 何か権限を割り当てなければならないのでしょうか。 データベースを初めて扱うため、言葉足らずな部分があるかもしれませんがご教示お願いいたします。 サーバはsqlserver2005です。

みんなの回答

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

・リモートとローカルで使っているユーザは同じですか? ・どうやってSELECT文を投げているのですか? ・ビューが重くてタイムアウトしているということはないですか? 普通に考えて、権限不足ではタイムアウトのメッセージにはならないはずですし、リモートのビュー参照だけをはじくような設定もありません。 念のため、SSMSの管理タブからSQL Serverログを見て、その時間帯に何か記録されていないかも見てください。

noname#83209
質問者

補足

ご回答ありがとうございます。 補足が遅くなり、申し訳ございません。 > リモートとローカルで使っているユーザは同じですか? はい、同じユーザを使用しています。 > どうやってSELECT文を投げているのですか? 下のように書いています。 String^ strSql = "SELECT * FROM view1 WHERE table_1 LIKE '%" + textBox->Text + "%' ORDER BY row1 ASC"; SqlConnection^ cn = gcnew SqlConnection("Persist Security Info=False;Integrated Security=SSPI;Server=server\\SQLEXPRESS;Database=database;User ID=guest"); SqlCommand^ com = gcnew SqlCommand(strSql, cn); SqlDataAdapter^ da = gcnew SqlDataAdapter(com); DataSet^ ds = gcnew DataSet(); try{   da->Fill(ds, "view1");   int Num = ds->Tables["view1"]->Rows->Count;   if(Num > 0){     label->Text = Convert::ToString(Num) + " 件";   }else{     label->Text = "見つかりません";   }   }catch(Exception^ ex){     MessageBox::Show(ex->Message);   } } textBoxと一致するビューのレコードデータをデータセットに取得し、レコード数取得をします。 textBoxと一致するときda->Fillのあとcatchのエラーメッセージにとびます。 一致しなければcatchはされていません。 > ビューが重くてタイムアウトしているということはないですか? プログラム動作を確認しながらテストをしていたため、ビューには1件のみ入れていました。 > 権限不足ではタイムアウトのメッセージにはならないはずですし、リモートのビュー参照だけをはじくような設定もありません。 そうなんですか。 SSMSの管理タブからSQL Serverログを確認してみます。 確認しましたら、またご報告いたしますのでよろしくお願いいたします。

関連するQ&A