したがって、リンクサーバーがあります。ただし、現在、カタログドロップダウンを展開した後、SSMS内からそのリンクサーバーに関連付けられているすべてのデータベースを表示できません。これは権限の問題である可能性があると私は理解しています。ただし、リンクサーバーからtat dbを操作するためにどのアクセス許可を付与する必要があるかは不明です。
何か案は?
リンクサーバーから次のコマンドを実行した後:
select * from [<server>].[<database>].[dbo].table1
次のエラーメッセージが表示されます。
OLEリンクサーバー ""のDBプロバイダー "SQLNCLI10"にテーブル "" "。" dbo "。" table1 ""が含まれていません。テーブルが存在しないか、現在のユーザーがそのテーブルに対する権限がありません。
TLDR;
問題:リンクサーバーに関連付けられているデータベースの1つを表示する方法がわかりません。!
これは、リンクサーバーに使用されるアカウントが、アクセスしようとしているデータベースのセキュリティに追加されていないためです。
リンクサーバーコンテナーに表示されているデータベースでは、読み取りアクセス権を持つセキュリティセクションに追加されたアカウント(元のdbサーバーに戻る)も見つかります。そのアカウントを元のサーバーで新しく作成されたdb(この場合はカタログ)に追加し、ターゲットdbサーバーでリンクサーバーを更新します。カタログが表示されます。
ただし、リンクサーバーからtat dbを操作するためにどのアクセス許可を付与する必要があるかは不明です。
ターゲットテーブルが存在することを確認したら、リンクサーバーを確認します。全員に1つのアクセス権セットを使用するか、個別のログインが割り当てられています。どちらの場合も、ログインしているログインにリンクサーバーが含まれていると、偽装またはリンクサーバーのログインリストにハードコードされたユーザー名でリモートサーバーにアクセスしようとします。
リンクサーバーのログインリストにあるユーザーがリモートサーバーに存在し、オブジェクトに対するリモートサーバーのアクセス許可を持っている必要があります。
追伸パフォーマンスを向上させるには、特にリンクサーバーテーブルを結合するときに、純粋な4部構成の名前ではなく、EXECUTE ATまたはOPENQUERYを使用してください。
.dbfを.fptと一緒にコピーすると、問題が解決しました。お役に立てれば。テーブルには、ローカルマシンにコピーする必要があるいくつかの依存関係がある場合があります。 .dbfファイルのみをコピーしたとき、上記と同じエラーが発生しました。
解決策:リンクサーバー経由で動的SQLを送信することにより、これを行うことができます。
EXEC Linkedservername.master..sp_executesql N'CREATE DATABASE databasename;
もちろん、これにはそのための権限が必要です。デフォルトの設定が適切であると想定すると、これは単純なコマンドです。CREATE DATABASE
コマンドをカスタマイズすることもできます。