現在、SQLServerをデータベースとして使用するサードパーティのソフトウェアスイートを実行しています。別の場所で実行されているSQLServerの2番目のインスタンスがあり、そのインスタンスで構築している一部のアプリは、サードパーティソフトウェアの一部のデータにアクセスする必要があります。そこで、ボックス間にODBC接続を作成し、サードパーティのSQLサーバーを自分のバージョンのSQL Serverでリンクサーバーとしてセットアップしました。テストとして、次のようなものを実行しました。サードパーティのテーブルの1つにアクセスするSQLサーバーからのステートメント:
SELECT * FROM LinkedServerName.SchemaName.dbo.TableName
私がこのエラーを受け取ったのは:
OLE DB error trace [Non-interface error: Column 'TableRowVersion' (compile-time
ordinal 4) of object '"SchemaName"."dbo"."TableName"' was reported to have a
DBCOLUMNFLAGS_ISROWVER of 0 at compile time and 512 at run time].
Msg 7356, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' supplied inconsistent metadata for a column. Metadata
information was changed at execution time.
このエラーは、私がアクセスしようとしている他のテーブルでも同じです。このエラーはどういう意味ですか、それを回避する方法はありますか?
私はこれを数回経験しました。私が見つけた1つの回避策は、OPENQUERYを使用することでした。
SELECT * FROM OPENQUERY(LinkedServerName, 'SELECT * FROM DBName.Schema.Table')
また、上記で投稿した選択の4つの部分の名前が正しくありません(タイプミスの可能性がありますが、よくわかりませんでした)。そのはず LinkedServerName.DBName.SchemaName.TableName
Server: Msg 7356, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' supplied inconsistent metadata for a column.
Metadata information was changed at execution time.
4部構成の名前構文を使用して、リンクサーバーデータベースからデータをクエリすると、このエラーメッセージが表示される場合があります。この問題を回避するには、OPENQUERY構文を使用して、リンクサーバーデータベースからデータをクエリします。トレースフラグ7300をオンにすると、このエラーメッセージに関する詳細情報を受け取ることができます。トレースフラグ7300をオンにするには、次のTransact-SQLステートメントを実行します。
DBCC TRACEON(7300)
私はこの手順でこれを解決しました
1)ステップ1:
•SQLServer Management Studioで、[リンクサーバー]を開き、[新しいリンクサーバー]を開きます。
•表示されたウィザードの内部– [全般]タブを選択します。
•「リンクサーバー」フィールドにエイリアス名を指定します。
•プロバイダーとしてSQLNativeClientを選択します。
•[製品名]フィールドにsql_serverを追加します(これが魔法です)。
•「データソース」で–リンクサーバーとして使用するホストの名前を指定します。
2)ステップ2:
•[セキュリティ]タブ–適切なセキュリティオプション(セキュリティコンテキストなど)を指定します
3)ステップ3:
•[サーバーオプション]タブ– [データアクセス]、RPC、[Rpc出力]、[リモートコラボレーションの使用]をtrueに設定します。
4)ステップ4:
• 楽しい。
http://alexpinsker.blogspot.com.br/2007/08/how-to-give-alias-to-sql-linked-server.html