web-dev-qa-db-ja.com

SQL Server:リンクサーバーでの頻繁なログインタイムアウトの期限切れ

SQL Server 2012を使用しています。1つのステップで1つの単純なストアドプロシージャを呼び出すジョブを1時間ごとに実行するようにスケジュールしました。ストアドプロシージャは、約1Kのデータを運用サーバーからローカルサーバーに移行します。リンクサーバーが正常に確立されました。ストアドプロシージャで使用されるクエリは次のようになります。

SELECT ID,Col1,Col2,Col3,Col4,Col5 into #temp from [111.111.111.111].ProdServer.dbo.SourceTable

Insert into Localtable(ID,Col1,Col2,Col3,Col4,Col5)
SELECT ID,Col1,Col2,Col3,Col4,Col5
FROM #temp where ID NOT IN (select ID from Localtable)

enter image description here

ジョブの実行には25〜30秒かかる場合があり、正常に実行されます。場合によっては48〜50秒かかり、失敗することがあります。下の失敗メッセージと上のスクリーンショットの他の詳細を参照してください。

失敗メッセージ:

ユーザーとして実行:NT AUTHORITY\NETWORK SERVICE。名前付きパイププロバイダー:SQL Serverへの接続を開くことができませんでした[53]。 [SQLSTATE 42000](エラー53)OLEリンクサーバー "111.111.111.111"のDBプロバイダー "SQLNCLI10"がメッセージ "Login timeout expired"を返しました。[SQLSTATE 01000](エラー7412)OLEリンクサーバー "111.111.111.111"のDBプロバイダー "SQLNCLI10"がメッセージ "SQL Serverへの接続を確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。インスタンス名が正しいかどうか、およびSQL Serverがリモート接続を許可するように構成されているかどうかを確認してください。詳細については、SQL Server Books Onlineを参照してください。 "[SQLSTATE 01000](エラー7412)。ステップは失敗しました。

もっと詳しく

  • テーブルは誰もロックしておらず、クエリは実行されていません。
  • リンクサーバーのプロパティで、クエリタイムアウトと接続タイムアウトの両方が0に設定されています。
  • サーバープロパティで、リモートクエリのタイムアウトも600秒に設定されています。

最後のオプションとして、 接続タイムアウト設定を変更 をデフォルト値の15から6000以上に変更しようとしました。達成できませんでした。 48分以上かかる場合でも、スケジュールされたジョブを正常に実行するための解決策を提案してください。

Right Click on server> Click on properties> Click view connection properties左ペインの接続の下-表示するConnection Timeout Property

1つの新しい観察:実行に48 seconds以上かかる場合、ジョブは失敗しています。

4
Shiva

私はここにいます 自分の質問に答える 。インターネット上での検索に関する多くの観察と実験の後、私はこの問題の解決策を見つけました。この単純なクエリを実行する必要があります

USE Yourdatabase;
GO
EXEC sp_configure 'remote query timeout', 0 ;
GO
RECONFIGURE ;
GO

設定は、サーバーを再起動せずにすぐに有効になります。

リモートクエリタイムアウトサーバー構成オプションの構成 および sp_configure を参照してください。

6
Shiva

サーバーを右クリックして[サーバーのプロパティ]を開き、[接続]に移動して、[このサーバーへのリモート接続を許可する]がオンになっていることを確認します。

また、ファイアウォールの設定を確認してください。

0