エクセルからSQLサーバーへの更新クエリが時間切れになるエラーが発生する

このQ&Aのポイント
  • エクセルからSQLサーバーへ更新クエリを実行している際に、突然「時間切れになりました。」というエラーが発生するようになりました。
  • エラーコード -2147217871が表示されます。
  • 何も設定を変更していないのに、作業ができなくなった原因を知りたいです。
回答を見る
  • ベストアンサー

エクセルからSQLサーバー 時間切れになるようになった

cn.Open "Provider=SQLOLEDB;Data Source=NASTUN-PC\SQLEXPRESS; " & _ "Initial Catalog=" & サーバー名 & ";" & _ "Integrated Security=SSPI" cn.Execute "UPDATE Tbl SET チェック = 0" エクセルからSQLサーバーへ更新クエリを実行しています。 今までこのコードで問題なく作業できていたのですが 昨日から エラーNo:-2147217871 「時間切れになりました。」 というエラーになります。 cn.CommandTimeout = 120 と長くしても同じです。 何もいじってないのにできなくなるなんてあるのでしょうか? SQLサーバーにはテーブルのみおいています。 よろしくお願いします。

  • chdyet
  • お礼率99% (108/109)

質問者が選んだベストアンサー

  • ベストアンサー
  • norayuni
  • ベストアンサー率79% (27/34)
回答No.1

タイムアウトそのものの原因はいろいろあります。 SQL Serverがインストールされているサーバのイベントログに何かエラーが記録されていないかを確認してみてください。 エラーログを確認するとタイムアウトの原因がわかるかもしれません。 例えば、SQL Serverのファイル容量オーバーetc

chdyet
質問者

補足

すいません、、、 自分のパソコン1台にエクセルもSQLサーバーも入れているのですが イベントログとはどうやって確認すればいいのでしょうか? SQL Server Management Studio Expressと構成ツールをインストールしています。 構成ツールのSQL Server エラーと使用状況レポート を見てみましたがログというのはなさそうです。 再度ご回答いただければ助かります。 よろしくお願いします。

その他の回答 (1)

  • norayuni
  • ベストアンサー率79% (27/34)
回答No.2

ちょっと言葉足らずでした。 SQL ServerのエラーもWindowsのイベントログに記録されることがあるのです。 Vistaですと、コントロールパネル→管理ツール→イベントビュアー イベントビュアーの(確か)アプリケーションに記録されるかと思います。

chdyet
質問者

お礼

ありがとうございます。 確認してみます。

関連するQ&A

  • 他のPCのSQLサーバーに接続したい

    2台のPCはLANに繋がれていて、同じワークグループです。 PC1をサーバーとして PC2からPC1のSQLサーバーへ接続したいのですが どうすればいいのでしょうか? (エクセル→SQLサーバーです。) PC1は Dim cn As New ADODB.Connection cn.Open "Provider=SQLOLEDB;Data Source=○○○○\SQLEXPRESS; " & _ "Initial Catalog=" & サーバー名 & ";" & _ "Integrated Security=SSPI" rs.Open "Tテーブル", cn, adOpenStatic, adLockOptimistic と言うように接続しています。 PC2から同じようにコードを書いてみましたがやはりエラーになってしまいました。 多分、 「cn.Open "Provider=SQLOLEDB;Data Source=○○○○\SQLEXPRESS;」 の部分だと思うのですが どうすればPC2からPC1のSQLサーバーへ接続することができるのでしょうか? どちらも環境は OS:2000、オフィス:2003、 PC1のみSQLサーバー2005がインストールされています。 IPアドレスは固定です。 ご教授よろしくお願い致します。

  • SQLSERVERデータをエクセルデータに読み込む方法を教えてください

    下記のコードにてエクセルでデータベースに接続しようとするのですが、どうしてもうまくいきません。開きたいデータベースは”sekisan.mdf”という名前です。現在はローカルPCにて接続したいとかんがえております。 何かおかしな点があったらご教授願います。それから、逆にエクセルデータをSQLSERVERの既存のデータに書き出すことって可能でしょうか? cn.ConnectionString = "Provider=SQLOLEDB;Data Source=(local);" & _ "Initial Catalog=sekisan;Integrated Security=SSPI;"

  • ADO 「NEW」の意味、必要性

    ADOを使ってACCESSやSQLサーバーへ接続する時に Option Explicit Sub ADO() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset cn.Open "Provider=SQLOLEDB;Data Source=○○○\SQLEXPRESS;Initial Catalog=test;Integrated Security=SSPI" rs.Open "table1", cn, adOpenStatic, adLockOptimistic というようなコードを書きますが、 変数の宣言の「 New 」はどういう意味なのでしょうか? 何のためにつけるのでしょうか? あえて「 New 」を取ると、 「オブジェクト変数または With ブロック変数が設定されていません。」 というエラーになります。 普通の変数(Dim table名 As String)に 「 New 」を付けるとコンパイルエラーになります。 違いがわかりません。 よろしくお願いします。

  • SQL Serverへ

    VBでSQL Server2000にアクセスしています。 先日質問させていただいた延長上の質問なのですが、サーバへのアクセスはIPアドレスでないとできないのでしょうか?たとえばドメイン名など○○.co.jp cn.ConnectionString = "Provider=SQLOLEDB;Network address=○○;" & "initial catalog=KecDataBase;User ID=○○;Password=○○" のように接続していました。address=○○;の部分を変更すればできるのかと思うのですが・・・ 知っておられる方いられましたらよろしくお願いします。

  • SQL Serverへの接続で困っています

    お世話になります。大変困っているので助けてください。 VB 2008EXPRESS EditionとSQL Server EXPRESS Edition(共に無償)をネットからダウンロードしてインストールしました。 VBからSQL Serverに接続したく以下のようなコードを記述しました。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' 接続文字列を生成する Dim stConnectionString As String = String.Empty ' stConnectionString &= "Data Source = ABSAN\SQLEXPRESS;" ' stConnectionString &= "Initial Catalog = ABSAN;" ' stConnectionString &= "Integrated Security = SSPI;" stConnectionString = "Server=ABSAN\SQLEXPRESS;Initial Catalog=ABSAN;Integrated Security = SSPI;" ' SqlConnection の新しいインスタンスを生成する (接続文字列を指定) Dim cSqlConnection As New System.Data.SqlClient.SqlConnection(stConnectionString) ' データベース接続を開く cSqlConnection.Open() ' 接続に成功した旨を表示する MessageBox.Show("Microsoft SQL Server に接続されました") ' データベース接続を閉じる (正しくは オブジェクトの破棄を保証する を参照) cSqlConnection.Close() cSqlConnection.Dispose() End Sub 結果として、「SqlEXceptionはハンドルされませんでした」旨のメッセージが帰ってきます。 但し、自分でもData SourceとInitial Catalogの設定のところがこれでいいのかと思っています。 何らかの形で正しい設定をしたいのですが、サーバのインストール時にこのような設定があったように記憶がありません。 また他にも原因があるようでしたら教えてください。 何分急いで下ります。よろしくお願いいたします。

  • 家庭内LANにて 他のPCのSQLサーバーへ接続したい

    同一のワークグループに ・vista(SQLサーバーインストール、データーベース作成済み) ・XP があります。 vba(ADO)を使って XPからvistaのSQLサーバーへ接続したいのですがうまくいきません。 vistaでの設定は セキュリティ構成→リモート接続→ローカル接続及びリモート接続→TCP/IPのみを使用する 構成マネージャー →SQLEXPRESSのプロトコル→TCP/IP→有効→IPアドレスにXPのIPアドレスをいれサービスを再起動しました。 そしてエクセルVBEに Dim CN As New ADODB.Connection Dim RS As New ADODB.Recordset CN.Open "Provider=SQLOLEDB;Data Source=192.168.0.6\SQLEXPRESS; " & _ "Initial Catalog=" & データベース名 & ";" & _ "Integrated Security=SSPI" (192.168.0.6はvista側のIPアドレス) にすると、 「実行時エラー -2147217843 ユーザー ’vista\guest’はログインできませんでした。」 となります。 192.168.0.6をvistaのホスト名にしても同じエラーです。 192.168.0.6を「localhost」やXPのIPアドレスdにすると 「実行時エラー -2147467259 [DBNETKIB][ConnecthionOpen (Connect)().]SQL Serverが存在しないか、アクセスが拒否されました。」 と言うエラーになります。 ・全く同じコードでvistaから接続できます。 ・XPのIPアドレスは自動取得です。 ・XPにSQLサーバはインストールしていません。 ・XPからvistaの中にある共有フォルダの中のmdbファイルなら問題なくadoで接続できます。 ご教授よろしくお願いします。

  • ASP.Net Web.Config 接続文字列が

    お世話になります。 Web.Config から 接続文字列を取得しようと下記のようなコードをサイトから学んだのですが、 Dim conStr As String = ConfigurationManager.ConnectionStrings("ConnectionStringSQL").ConnectionString Dim conn As SqlConnection = New SqlConnection(conStr) これを実行すると、エラーになってしまいます。 "Provider=SQLOLEDB;Data Source=SERVER01;Integrated Security=SSPI;Initial Catalog=TESTSQL" 上記が接続文字列なのですが、Provider=SQLOLEDB この部分を取り除き、 "Data Source=SERVER01;Integrated Security=SSPI;Initial Catalog=TESTSQL" このように直接、接続文字列を上記のようにすると、問題なく動くのですが、何かおかしいと思うのですが、わたくしの方にミスや足りない個所があれば、是非、ご指摘いただければと存じます。 Dim conStr As String = ConfigurationManager.ConnectionStrings("ConnectionStringSQL").ConnectionString Dim conn As SqlConnection = New SqlConnection(conStr) 上記のように記述して接続文字列を取得設定できればスマートだと思うのですが・・・・ よろしくお願いいたします。

  • ASPからSQLサーバーへ接続できない

    色々な質問を見たのですが 環境などの違いもあり解決できず 困っています。 環境は1台のPC(W2000)にIIS+SQLサーバー2005デベロッパーエディションとか言うテスト用のバージョンをインストールしています。 また SQLサーバーはWindows認証を使っています。 SQLサーバーにマネジメントエキスプレスで接続して システムデータベースにPLEMIAというデータベース名を作り テーブルのシステムテーブルにpure_kihonというテーブルを作っています。 ASPにて試験的につないでみようと思い Dim objCon Set objCon = Server.CreateObject("ADODB.Connection") objCon.ConnectionString = "Provider=SQLOLEDB;" & _ "Data Source=(local);" & _ "Initial Catalog=PLEMIA;" & _ "Integrated Security=SSPI;" objCon.Open strSQL = "SELECT * FROM [pure_kihon]" objRS.Open strSQL, objCon, 3 こうした場合  objCon.Open のところで引っかかり Microsoft OLE DB Provider for SQL Server (0x80004005) [DBNETLIB][ConnectionOpen (Connect()).]SQL Server が存在しないか、アクセスが拒否されました。 と出てしまいます。 SQLサーバー自体は稼働しているようなんですが 何がいけないのか よく分かりません。 どなたか解決策などご教授頂けると幸いです。 よろしくお願いします。

  • SQL Server 2005 CLR VB2005 DBアクセス方法

    SQL Server 2005 CLR ですが VB2005でOleDbConnection.Openできないのですが、、、 VB2005のWinAppから呼び出すとちゃんとOPENするのですが、 SQL Server 2005 から呼び出すとOPENでこけます。 ソースは以下です ---- Imports System.Data.OleDb connStr = "Provider=SQLOLEDB.1;Password=xxxxxxx;Persist Security Info=True;User ID=sa;Initial Catalog=tbl_1;Data Source=SV01" m_conn = New OleDbConnection(connStr) m_conn.Open() ---- System.Data.OleDb が使えないのでしょうか? OS:WinXPSP2 VS2005Developer

  • SQL Serverへの接続について

    すみませんが、どなたか教えてください。 Access2000のプロジェクトからADOを使って、OLE-DB経由でSQL Serverに接続しようとしています。 SQLステートメントを指定して、レコードセットを作成したいのですが、 以下のSQL分のテーブル名のSYARMに対して、オブジェクト名SYARMは無効ですというメッセージが出てきます。どこが問題になっているのでしょうか? Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset cn.Open "Provider=SQLOLEDB;" & "datasource=(local);" & "Integrated Security=SSPI;" rs.Open "SELECT * FROM SYARM WHERE KANNO=12345;", cn, adOpenKeyset, adLockOptimistic rs.Close cn.Close Set rs = Nothing Set cn = Nothing