servername\instancename
次の呼び出しを使用して、SQL Server 2014インスタンスにリンクサーバーを作成しようとしています。
EXEC master.dbo.sp_addlinkedserver
@server = N'servername\instancename',
@srvproduct=N'SQL Server'
エラーが発生しています:
Msg 15028, Level 16, State 1, Procedure sp_addlinkedserver, Line 82
The server 'servername\instancename' already exists.
これはSQL Server 2005で正常に機能し、MSDNによると、
リンクサーバーはSQL Serverの別のインスタンスである必要はありませんが、
そのため、これを許可しない最近のバージョンで何が変更されたのかわかりません。UIを使用すると、同様のメッセージが生成されます。
ローカルSQL Serverをリンクサーバーとして作成することはできません。
リクエストするのは奇妙なことだと理解していますが、2005年に機能した(かつては別のインスタンスにあった)レガシーコードをサポートすることです。ドキュメントには、動作するはずであると記載されていますが、動作しません。2014年にこれを機能させる方法はありますか、それとも基になるコードを変更する必要がありますか?
1
実際には違いはありません。ローカルサーバーで4部構成の識別子を使用できます。
—
クリス・グルッテマイヤー14
ローカルサーバーへのリンクサーバーを作成しようとするのはなぜですか?どの部分が機能しないのですか?多分それはあなたの質問がどうあるべきかです...
—
アーロンバートランド
レガシーコードは、リンクサーバーを介して接続するさまざまなインスタンス用に作成されました。歴史のある時点で、2つのインスタンスは単一のインスタンスにマージされましたが、コードとリンクサーバーは変更されませんでした。私の目標は、コードをそのままサポートすることです。a)コードの変更に関与するものがわからないため、b)メインの開発者は、将来、別々のインスタンスに分散されるデータベースをサポートできるようにしたいからです。
—
mathewb 14
同義語を検討することもできます。次に、オブジェクトを別のサーバーに移動した場合は、類義語をドロップして再作成するだけで、コードを変更する必要はありません。
—
アーロンバートランド
ありがとうアーロン。それがまさに私が探していたものだと思います。1つのデータベースは同義語を使用しているため、4つの部分からサーバー名を削除して削除するだけです。その後、リンクサーバーを完全に削除できます。データベースが後で移動される場合、リンクサーバー名を同義語に追加し直すことができます。とった。
—
mathewb 14