Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ошибка при запуске OPENROWSET через PHP  [new]
norx
Member

Откуда:
Сообщений: 9
Привет. Подскажите почему при запуске хранимой процедуры в MS SQL,через PHP, в которой используется функция openrowset() возникает ошибка:
"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"

Процедуру запускаю mssql_execute() .
Спасибо
29 сен 09, 17:53    [7721747]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при запуске OPENROWSET через PHP  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Потому что в ней "Heterogeneous queries". Пересодайте хп:

SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
GO
CREATE PROC...

Более того, mssql_execute(), насколько я помню, работает через DB-Library, которая при коннекте устанавливает их в OFF. Так что и для сесси не помешало бы взвести эти опции.
29 сен 09, 18:02    [7721804]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при запуске OPENROWSET через PHP  [new]
norx
Member

Откуда:
Сообщений: 9
pkarklin,

так я даже в процедуре так делаю
CREATE
....

set @sql = 'SET ANSI_NULLS ON 
SET ANSI_WARNINGS ON 
insert into pay (Sum,naz ,[filename])

SELECT      S, naz, '''+@filename+'''
FROM        OPENROWSET(''MSDASQL'', ''DRIVER={Microsoft dBase Driver (*.dbf)}'',
 ''select * from \\server17\DBFfiles\new.dbf'')'
Exec (@sql)
...
END
и ничего все та же ошибка.
автор
Так что и для сессии не помешало бы взвести эти опции.

А для какой сессии, PHP? И как их взвести, передать в MSSQL?
29 сен 09, 18:20    [7721881]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при запуске OPENROWSET через PHP  [new]
norx
Member

Откуда:
Сообщений: 9
norx, надо было так написать

set @sql = '
insert into pay (Sum,naz ,[filename])

SELECT      S, naz, '''+@filename+'''
FROM        OPENROWSET(''MSDASQL'', ''DRIVER={Microsoft dBase Driver (*.dbf)}'',
 ''select * from \\server17\DBFfile\new.dbf'')'

SET ANSI_NULLS ON 
SET ANSI_WARNINGS ON 

Exec (@sql)

SET ANSI_NULLS ON
SET ANSI_WARNINGS ON перед Exec

Всем спасибо
29 сен 09, 19:03    [7722048]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить