php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #32278 Remote linked server not accessibile
Submitted: 2005-03-11 15:24 UTC Modified: 2005-06-14 01:00 UTC
Votes:50
Avg. Score:4.7 ± 0.6
Reproduced:42 of 42 (100.0%)
Same Version:14 (33.3%)
Same OS:23 (54.8%)
From: raulionescu at gmail dot com Assigned:
Status: No Feedback Package: MSSQL related
PHP Version: 5.0.4 OS: WinXP Pro
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please — but make sure to vote on the bug!
Your email address:
MUST BE VALID
Solve the problem:
48 - 38 = ?
Subscribe to this entry?

 
 [2005-03-11 15:24 UTC] raulionescu at gmail dot com
Description:
------------
I have created a stored procedure wich is accessing an remote linked MSSQL 2000 server and works perfectly from Querry Analyzer. The problem occurs when I try to execute the stored procedure from php (by using mssql_bind or mssql_query); I've got no error but no result either. It seems that php doesn't allows to access remote linked servers!


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-03-12 14:43 UTC] sniper@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip


 [2005-03-14 08:34 UTC] raulionescu at gmail dot com
OK, but I need also the complete PECL package and I don't think it's gonna work by overiding only PHP's mssql files.
Am I right?
 [2005-04-05 16:44 UTC] raulionescu at gmail dot com
I've tried with PHP 5.0.4 and the problem it's the same....
 [2005-04-08 21:26 UTC] sniper@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip


 [2005-06-06 11:00 UTC] raulionescu at gmail dot com
I've tried and no changes. Even more, when I tried to execute stored procedures who takes very long time to run (~10-15min), the result is none and my opinion is that seems like a time-out beeing reached because the same stored procedure runs with no problems from SQL querry anliser.
 [2005-06-07 00:17 UTC] sniper@php.net
Try putting 'error_reporting(E_ALL);' as first line in your script and see if you get any warnings/notices..

 [2005-06-14 01:00 UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
 [2006-09-15 13:58 UTC] redshifteric at gmail dot com
Bug reproduced on Win2k Server
MSSQL 2000 SP3
PHP 5.1.2

I tried using the normal syntax to access table on the linked server.
I mean using linkedservername.databasename.dbo.tablename or directoty the local tablename but without success.

If i specify the full linked server path, i get the following error:
Could not find server 'KCONT81' in sysservers. Execute sp_addlinkedserver to add the server to sysservers

But if i execute the same query trough isqlw.exe (query analyzer) it works fine.

Best regards,

Red
 [2007-12-12 19:33 UTC] kenneth dot kaye at bankofamerica dot com
This bug still exists as of PHP 5.1.2.  I run PHP(cli) 5.1.2 on Windows 2003 Server, and attempting to execute a stored procedure within PHP that calls a linked server yields the following error:

PHP Warning:  mssql_execute(): message: Heterogeneous queries require the ANSI_NULLS and ANSI_WARNINGS options to be set
 for the connection. This ensures consistent query semantics. Enable these options and then reissue your query. (severit
y 16) in c:\logs\btest.php on line 46
PHP Warning:  mssql_execute(): stored procedure execution failed in c:\logs\btest.php on line 4
6
PHP Warning:  mssql_fetch_array(): supplied argument is not a valid MS SQL-result resource in c:\logs\btest.php on line 55

I have ANSI_NULLS and ANSI_WARNINGS set within the stored procedure itself.  Any advice or a fix?
 [2008-04-30 16:41 UTC] webster_jack at hotmail dot com
Hi
Has this bug been fixed?
 [2008-06-09 20:07 UTC] cmoore at getzeroedin dot com
I'm experiencing the same error, Warning: mssql_query() [function.mssql-query]: message: Heterogeneous queries require the ANSI_NULLS and ANSI_WARNINGS options to be set for the connection. This ensures consistent query semantics. Enable these options and then reissue your query, when attempting to execute a linked MDX query to SQL Server Analysis Services (an analytics cube).  Below is the query ....

set ANSI_NULLS ON;
set ANSI_ARNINGS ON;

exec sp_addlinkedserver 
@server='linked_olap', 
@srvproduct='', 
@provider='MSOLAP.3', 
@datasrc='scout', 
@catalog='Adventure Works DW Standard Edition'
;


SELECT * 
FROM OpenQuery(linked_olap,'SELECT 
  {Measures.[Internet Order Count]} ON COLUMNS , 
  [Product].[Category].members ON ROWS
FROM [Adventure Works]') 
;

exec sp_dropserver 'linked_olap'
;
------------

In the linked server procedure, 'scout' is my database server name, but Adventure Works is the sample analysis server data warehouse (cube), so you should be able to recreate this simply.

Are there any plans to support native MDX queries against a SQL Server Analysis Server, or plans to resolve this issue?
 [2008-07-01 21:04 UTC] steven_crombie at yahoo dot com
Web Server:
  php 5.2.5
  Windows 2003 Server Standard SP1
  IIS 6.0

SQL Server:
  SQL Server 2005
  Windows 2003 Server Standard SP2
  Management Studio 9.00.3042.00

I have not been able to get a result set when using php to query the MS SQL Server when the query references a linked server.  

I have also tried putting the query in a database view and querying the view instead of directly to the tables.  Still no results. 

I have also tried putting my query in a stored procedure and calling the stored procedure.  Still no results returned.

All three methods (direct query, view, and stored procedure) produce good results when using Management Studio or the sqlcmd utility.

A fix for this long-standing problem would be most appreciated.
 [2008-07-02 16:35 UTC] steven_crombie at yahoo dot com
Additional comment to the post above...

To test that there was nothing amiss with the setup, code, or database server, I changed the query to pull data from a database local to the SQL Server (not linked database).  I got the expected result set.
 [2009-02-19 12:56 UTC] aromal at gmail dot com
any update on this? 
somebody there to give us a reply?
 [2009-03-16 14:44 UTC] mcollard at hotmail dot com
Seconded, this issue is ongoing and problematic.
 [2009-03-24 20:51 UTC] ups dot jer at gmail dot com
Reproduced on PHP Version 5.2.4-2ubuntu5.5
 [2009-03-24 20:53 UTC] ups dot jer at gmail dot com
To provide further info, I just verified that I cannot do this directly, nor can I call a stored proc which in turn hits the linked server.
 [2009-12-14 20:38 UTC] ericsolan at yahoo dot com
try adding this right before you call your mssql_query

$result = mssql_query("SET ANSI_NULLS ON") or die(mssql_get_last_message());
$result = mssql_query("SET ANSI_WARNINGS ON") or die(mssql_get_last_message());
 [2011-03-02 00:55 UTC] jnovack at gmail dot com
ericsolan at yahoo dot com you are wise behind your years.  The workaround worked 
perfectly.
 [2011-03-02 01:00 UTC] michaeljsmalley at gmail dot com
@ericsolan Thank you thank you thank you.  Your fix...

$result = mssql_query("SET ANSI_NULLS ON") or die(mssql_get_last_message());
$result = mssql_query("SET ANSI_WARNINGS ON") or die(mssql_get_last_message());

... worked *perfectly* on CentOS release 5.2 (Final) connecting to Microsoft SQL 
Server 9.0.3042.
 [2011-03-09 19:42 UTC] filthy_mcnasty at hotmail dot com
had same problem. glad someone posted a workaround. thanks to the guy who did.
 [2012-02-16 21:23 UTC] mrezair at azarbod dot com
I used the following and it worked

$result = mssql_query("SET ANSI_NULLS ON") or die(mssql_get_last_message());
$result = mssql_query("SET ANSI_WARNINGS ON") or die(mssql_get_last_message());
  
$sql_str = "SELECT * FROM OPENQUERY(TEST, 'SELECT I_DESCRIPTION FROM INVFULL')" ;
 [2012-06-12 06:20 UTC] tddy_chandra at yahoo dot com
Thanks, this site really helpful me to get solution call linked server from php.. 
:)
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Apr 19 08:01:28 2024 UTC