web-dev-qa-db-ja.com

リンクサーバーはSSMSで動作し、SSDTでは見つかりません

私のMicrosoftSQL Serverには、別のSQLServerにリンクされたサーバーがあります。リモートテーブルを削除し(切り捨ては機能しません)、データを挿入する簡単なクエリがあります。

このクエリは、SSMSで実行されている場合は正常に機能します。ただし、スケジュールどおりに実行する必要があるため、ESTとしてdtsxに追加します。問題は、このdtsxを実行すると、SSDTで手動で実行する場合でも、SQL Serverエージェントで自動的にスケジュールする場合でも、次のメッセージで失敗することです。

sys.servers`でサーバー '-----'が見つかりませんでした。

これは非常に奇妙です。もちろん、サーバーはsys.serversにあり、リンクサーバーは機能しています。私が言ったように、SSMSで実行するとまったく同じクエリが機能します。この不一致の原因が何であるかを想像することすらできません。他のリンクサーバーは正常に動作します。

誰かがそれを引き起こしている可能性があり、私が手がかりを探すことができるものを推測できますか?このエラーをグーグルで検索すると、リンクサーバーを構成する方法を説明するだけですが、すでに存在しています。

1
Hikari

リンクされたオブジェクト名をクエリと一緒に共有できますか?時々問題はFROMの部分にあります。このエラーが発生する可能性のある状況はたくさんあり、それらの多くはStackOverflowでカバーされています。ただし、共有サーバーで特に発生する可能性のある1つのケースは、データベース名にピリオド(ドット)が含まれていることです。たとえば、その名前がmysite.com_DBの場合。これにより、自動的に問題が発生します。

データベースの名前を変更できない場合の解決策は、DB名を角かっこで囲むことです。たとえば、次のようになります。

mysite.com_DB.Table_name

になります:

[mysite.com_DB].Table_name
1
Rafael Cardoso

この問題の原因を見つけることができませんでした。別のMSSQLインスタンスで試してみたところ、そこから機能しました。

0
Hikari