За последние 24 часа нас посетили 16948 программистов и 1295 роботов. Сейчас ищут 1453 программиста ...

Вызов из PHP ХП с Linked server - ХП не работает

Тема в разделе "MSSQL", создана пользователем Doomych, 30 ноя 2011.

  1. Doomych

    Doomych Активный пользователь

    С нами с:
    11 авг 2011
    Сообщения:
    10
    Симпатии:
    0
    Есть ХП MS SQL. В этой процедуре, в числе прочего, имеется SELECT, в котором есть обращение к линкованным серверам. Если вызывать эту процедуру из MSSQL, то она работает. Если же ее вызвать через PHP, то нет (то есть не выполняются даже действия, стоящие до SELECT'а; транзакций нет). Проблема исчезает, если в SELECT'е убрать JOIN'ы к таблицам из линкованных серверов. Почему так происходит и как это победить?

    MS SQL 2008
    PHP 5.2.6

    [sql] -- Упрощенный кусок ХП
    SELECT *
    FROM dbo.Table1 AS R (NOLOCK)
    INNER JOIN SSERVER.MainDB.dbo.Table2 AS S (NOLOCK) ON R.CR_SkdID = S.Skd_ID
    WHERE R.CR_ID = @CRID
    [/sql]

    PHP:
    1.       $link = @mssql_connect('MYSERVER', 'login', '****');
    2.       $db = @mssql_select_db('MyDatabase', $link);
    3.       $query = "EXEC dbo.MySP '821131A3-D523-4B42-9EC2-CDBB8F89D403', 18847";
    4.       $q = mssql_query($query);
    5.       die('|'.$q.'|');
    6.  
     
  2. uri

    uri Активный пользователь

    С нами с:
    3 сен 2009
    Сообщения:
    43
    Симпатии:
    1
    Если по входным параметрам все ОК, возможно, не хватает прав.
    Приведите текст ошибки что ли...
    Узнать на чем рубится запрос можно:
    1) профилированием
    2) дебугом (в 2008 из MS VStudio)
    3) выводом сообщений принтами или селектами
    4) возвратом некоего числа с помощью RETURN
    Добавьте в код процедуры соответствующие куски, скомпильте процедуру и вызовите ее.
    Т.е. на первом этапе Вам надо определить, в процедуру заходим или нет (рубится по правам или по другим ошибкам)