Страница 1 из 1

mssql + php

Добавлено: 2010-11-11 9:53:27
drdim
В общем пых работет на FreeBSD, Почти все отлично только вот запросы не проходят для mssql сервера. Freetds использует 7.2 для 2005 сервера mssql.
База хитрая, с 4-мя тригерами. При выполнении элементарного кода вставки

Код: Выделить всё

INSERT INTO table	 (GoodsId ,Image ,Image2 ,ImageType)
    		     VALUES ('.$GoodsId.',\''.$link200.'\',\''.$link800.'\,1)
Сыпится ошибка:

Код: Выделить всё

Warning: mssql_query() [function.mssql-query]: message: INSERT failed because the following SET options have incorrect settings: 'ANSI_NULLS, CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS, ANSI_PADDING'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or query notifications and/or xml data type methods. (severity 16)
Пробую включать и отключать опции на которые он ругается

Код: Выделить всё

SET NUMERIC_ROUNDABORT OFF;
SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT ON;
SET QUOTED_IDENTIFIER, ANSI_NULLS ON;
- все в бестолку. Данный запрос легко выполняется через студию. Наведите на правильный путь. Есть идеи?

Re: mssql + php

Добавлено: 2010-11-22 15:33:39
drdim
Отпишусь если кто еще с этим столкнется... Решено было в тот же день...
запрос на активацию данных опций надо заранее выполнить !отдельным! запросом, а потом только выполнять дальнейшие запросы.

Код: Выделить всё

mssql_query('SET NUMERIC_ROUNDABORT OFF;
SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT ON;
SET QUOTED_IDENTIFIER, ANSI_NULLS ON;');

mssql_query('INSERT INTO table    (GoodsId ,Image ,Image2 ,ImageType)
               VALUES ('.$GoodsId.',\''.$link200.'\',\''.$link800.'\,1)');

Как то так.

Re: mssql + php

Добавлено: 2012-02-29 4:51:00
TooroSan
Спасибо огромное! :smile: реально быстро решили проблему благодаря Вашему сообщению! :good:

Re: mssql + php

Добавлено: 2012-06-22 12:09:30
ololo-mssql
Я правильно понимаю, что эти параметры устанавливаются только на время текущего запроса(коннекта к mssql) не задевая глобальных?

Код: Выделить всё

mssql_query('SET NUMERIC_ROUNDABORT OFF;
SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT ON;
SET QUOTED_IDENTIFIER, ANSI_NULLS ON;');