2016-08-07 9 views
0

あるサーバのテーブルを別のサーバのデータから更新しようとするたびに、次のエラーが発生します"TCPプロバイダ:指定されたネットワーク名は使用できなくなりました" 。ここでが更新ステートメントです:TCPプロバイダ:指定されたネットワーク名はもう使用できません

update a 
    set a.vendorID = b.SubID 
    from ana.[FleetPlus].[dbo].[ServiceHistory] as a inner join ppcor.[subcontractors].[dbo].[Subcontractors] as b 
    on a.vendorID = b.FleetID 

この更新クエリは、約5〜10分間ハングして、私にそのエラーメッセージを表示します。私はこれについてselect文を実行できるので、混乱します。私はそれが私のリンクされたサーバーの問題だと思ったし、私はSSCMをチェックし、Named PipesとTCP/IPは両方のサーバーで有効になっています。これは約10kレコードしか更新していないので、それほど多くはありません。何が起こっているのか何かを確認する必要がありますか?

答えて

1

リンクサーバーに問題があるようです。
は1を知っているが、これらの二つの選択を実行し、そのエラーを持っている場所を確認しないでください。

SELECT TOP 1 1 FROM ana.[FleetPlus].[dbo].[ServiceHistory]; 
GO 
SELECT TOP 1 1 FROM ppcor.[subcontractors].[dbo].[Subcontractors]; 
GO 

次にあなたがそのリンクサーバーのトラブルシューティングをする必要があると思います。

BTWこれは、異なるサーバーのテーブルをリンクすることは非常に悪い習慣です。つまり、リモートサーバーでフルテーブルスキャンを実行し、ネットワーク経由でこれらのデータをコピーし、SQL Server上でこれらのデータ用にメモリを割り当ててからSELECTを実行するだけです。

+0

私はこれを試します。 2つの異なるサーバーから2つのテーブルをリンクする必要がある場合は、テーブルの1つのコピーを作成し、それを別のテーブルにあるdBに配置することをお勧めしますか?異なるサーバーから2つのテーブルをリンクする必要がある場合は、この問題を解決するために推奨されるベストプラクティスは何ですか? @ Slava Murygin – ETA

+0

それは非常に広い質問です。簡単な答えがあるかどうかはわかりません。問合せが何らかのレポートをサポートしている場合は、ETLプロセスを使用してすべてのデータを1か所(データ・マート)でまとめて収集するか、または発行するためのレポートを準備することをお勧めします。 –

関連する問題