2017-06-14 30 views
2

3つのSQL Serverがあり、OpenRowsetで奇妙な動作が発生しています。遅延準備が完了できませんでした。3 SQL Server

考える:

  • サーバ1 = 192.168.1.1、
  • サーバ2 = 192.168.1.2、
  • サーバ3 = 192.168.1.3、
  • サーバ4 = 192.168.1.4

SQL:

SELECT a.* 
FROM OPENROWSET('SQLOLEDB', 
       'Data Source=192.168.1.1;Persist Security 
Info=True;uid=sa;pwd=password', 
       'SELECT * FROM dfs_database.dbo.dfs_vehicledata ') AS a; 

これは奇妙な部分です:上記のSQL文を.3と.4のサーバで実行すると、すべて正常に動作します。私は、サーバー0.2上でSQLステートメントを実行する場合

はしかし、私が取得:据え置き準備

リンクサーバーのOLE DBプロバイダー「SQLNCLI11」「(ヌル)」返されたメッセージは、」完了できませんでした。 "

メッセージ8180、レベル16、状態1、行7
ステートメントを準備できませんでした。

Msg 208、レベル16、状態1、行7
無効なオブジェクト名 'dfs_database.dbo.dfs_vehicledata'。

他の関係がうまくいくと、1つの関係がうまくいかないことがありますか?何か案は?これらはすべてSQL Server Expressであり、SQLNCLI11プロバイダを持つすべてのレポートです。

+0

あなたのエラーメッセージが '無効なオブジェクト名「dfs_database.dbo.dfs_vehicledata''言います。あなたは正しいDBを打っていると確信していますか?テーブル名は、開いているクエリでも大文字と小文字が区別されることがあります。 – LordBaconPants

+0

そのサーバーで同じクエリをローカルに実行できますか? – Anton

+0

そのサーバーにマップされているリンクサーバーをセットアップし、そのサーバーに任意のオブジェクトにアクセスできるかどうかを確認してください。 – Anton

答えて

0

それはこのようになりOpenRowSetを使用する:

sp_configure 'Show Advanced Options', 1 
GO 
RECONFIGURE 
GO 
sp_configure 'Ad Hoc Distributed Queries', 1 
GO 
RECONFIGURE 
GO 
OPENROWSET('SQLNCLI', 
'Server=ipHere\ExtentionNameifHas;Database=DBName;Uid=userName;PWD=Password;' 
,'SET FMTONLY OFF;SET NOCOUNT ON;SELECT * FROM 
dfs_database.dbo.dfs_vehicledata' 
+0

ありがとうございました。それは交換することが分かりました データソース= 192.168.1.1 サーバー= 25.100.85.28;データベース= DFS_DATABASE プロバイダーが "SQLOLEDB"として残っている場合でも、トリックをしました。 。 – Aaron

関連する問題