2015-09-16 83 views
1

下面的查詢在SQL Server中工作的罰款2008 R2SQL Server的OPENQUERY來執行命令

select * 
from openquery(LinkedServerName, 'exec databaseName.dbo.SP_GET_INFO'); 

我嘗試使用exec命令將其轉換,但沒有運氣。

例如:

exec ('call databaseName.dbo.SP_GET_INFO') at LinkedServerName 

始終得到這個消息的語法錯誤:

Could not execute statement on remote server 'LinkedServerName'

感謝。

+1

LinkedServerName處的exec('exec databaseName.dbo.SP_GET_INFO') – lad2025

+0

謝謝@ lad2025,但是我得到這個錯誤: 鏈接服務器的OLE DB提供程序「STREAM」「(null)」返回消息「The操作多步OL​​E DB生成的錯誤如果可用,檢查OLE DB的狀態值,沒有工作完成。「 – iperezmel78

+0

您的存儲過程是否返回XML/TEXT/Image等? – lad2025

回答

0

感謝@ lad2025的幫助。

使用下面的腳本將工作:

exec ('databaseName.dbo.SP_GET_INFO') at LinkedServerName 

我第一次測試,它並沒有因爲我用來創建鏈接服務器的驅動程序的工作的代碼。 我已經使用了「Microsoft OLE DB Provider for ODBC Drivers」。有了這一個我得到了錯誤:

OLE DB provider "STREAM" for linked server "(null)" returned message ...

的原因是因爲在存儲過程中我做了選擇在具有空值的ntext列。

因此,我將驅動程序更改爲「用於SQL Server的Microsoft OLE DB提供程序」,該腳本正常工作。

希望這可以幫助別人。