declare @node int = 9044;
DECLARE @sqlCommand NVARCHAR(MAX) =
(
'SELECT * FROM [@node].[database_name].dbo.table_name'
);
DECLARE @paramList NVARCHAR(400) =
(
'@node int'
)
exec sp_executesql @sqlCommand, @paramlist, @node;
これは私が実行しようとしている単純なクエリです。 9044は問題ありません。このクエリを実行すると、正常に動作します(明らかに、dbとテーブル名は削除されています)。何が間違っているのか完全にはわからない。私が手にエラーがある:SQL Serverの動的クエリ - リンクされたサーバーを見つけることができません
メッセージ7202、レベル11、状態2、行1 はsys.serversにサーバの@node 'が見つかりませんでした。正しいサーバー名が指定されていることを確認します。必要に応じて、ストアド・プロシージャsp_addlinkedserverを実行してサーバーをsys.serversに追加します。
あなたはserver.db.table
@nodesを定義する3ドット表記を使用しているEXEC (@sql)
あなたの動的SQLは失敗していますが、静的SQLの実行は機能していますか?同じサーバー/データベースに対して、同じサーバー/データベースに対して実行しているデータベース/サーバでsp_addlinkedserver '9044'を実行すると、問題が解決されます。 – UnhandledExcepSean
は、9044という名前のリンクサーバーを参照する@Nodeですか? – rene
@ nodeをnvarcharに変換するとどうなりますか? – UnhandledExcepSean