I have 2 SQL 2005 servers in the following configuration:
- SQL2005-1 includes a linked server to SQL2005-2 (using SQL Native Client provider)
- SQL2005-2 has a database named 'filesearch' (with stored procedure named 'app_filesearch') and an index linked server named 'qasite1'
From SQL2005-1, I'm able to issue:
exec [SQL2005-2].filesearch.dbo.app_filesearch
and get valid results. If I attempt, on SQL2005-1, to stuff these results into a temp table:
create table #files ([filename] varchar(255))
insert into #files
exec [SQL2005-2].filesearch.dbo.app_filesearch
I get the following error:
The requested operation could not be performed because OLE DB provider "MSIDXS" for linked server "qasite1" does not support the required transaction interface.
Here are the contents of the app_filesearch SP:
set nocount on
set quoted_identifier off
SELECT * FROM OPENQUERY(qasite1, 'SELECT FileName FROM SCOPE() WHERE CONTAINS( Contents, ''"bug"'')')
I have tried changing the SELECT statement and found that if I remove the OPENQUERY portion (and use a simple SELECT * FROM some_table) the results are successfully placed into my temp table.
I've tried changing the settings on the MSIDXS provider in SQL 2005 but that made no difference.
Also, this same procedure works fine when SQL2005-2 is replaced with SQL 2000.
create table #files ([filename] varchar(255))
insert into #files
exec filesearch.dbo.app_filesea