znaczacy > comp.lang.* > comp.lang.delphi.bazy-danych

Jacek (14.11.2011, 13:17)
Mam kłopot z Delphi 2010 i indeksami filtrowanymi.

Pojawiają mi się błedy

EOLEException with message'
Update failed becaus the folowning set options have incorrect settings:
ANSI_NULLS, QUOTED_IDENTIFIER

Ustawiam parametry połaczenia serią poleceń
set ANSI_NULLS ON
set ANSI_PADDING ON
set ANSI_WARNINGS ON
set ARITHABORT ON
set CONCAT_NULL_YIELDS_NULL ON
set NUMERIC_ROUNDABORT OFF
set QUOTED_IDENTIFIER ON

Co może być przyczyną.
Operacje wykonywane w SQL Managment Studio nie powoduja błedu.
PaSkol (14.11.2011, 13:29)
W dniu 2011-11-14 12:17, Jacek pisze:
> Mam kłopot z Delphi 2010 i indeksami filtrowanymi.
> Pojawiają mi się błedy
> EOLEException with message'
> Update failed becaus the folowning set options have incorrect settings:
> ANSI_NULLS, QUOTED_IDENTIFIER


Wypadałoby jeszcze podać, jakie komponenty dostępu do bazy danych.
Jacek (14.11.2011, 13:37)
> Wypadałoby jeszcze podać, jakie komponenty dostępu do bazy danych.
> PaSkol


TADOConnection
TADOStoreProc
TADOQuert
PaSkol (14.11.2011, 13:51)
W dniu 2011-11-14 12:37, Jacek pisze:

> TADOConnection
> TADOStoreProc
> TADOQuert


Nie mam takiego problemu. Wykonuje w SSMS:

create table Test (id int identity (1, 1), x int);
create index I_Test on Test (id) where x < 5;
insert into Test values (1), (2), (3), (4), (5);

następnie wykonuje z poziomu TADODataSet (ExecSQL):

insert into Test values (-1), (-2), (-3), (14), (15);

I żadnych problemów. Nie ustawiałem też parametrów sesji (set ...).
SQL2008R2 Express.
PaSkol (14.11.2011, 13:53)
To też zadziałało bez problemu.

update Test set x = x * 2
PaSkol (14.11.2011, 13:54)
W świetle powyższych faktów potrzebna będzie struktura tabeli i
definicja indeksu.
Jacek (14.11.2011, 13:57)
> I żadnych problemów. Nie ustawiałem też parametrów sesji (set ...).
> SQL2008R2 Express.
> PaSkol


Moja baza ma compatibility Level 80 (sql2000) server 2008R2 Ent
I na tym poziomie były tworzone wszystkie obiekty.
Potem ustawiłem we właściwościach bazy ARITHABORT ON
i dopiero założyłem indeks (bez tego się nie dało)
PaSkol (14.11.2011, 14:09)
W dniu 2011-11-14 12:57, Jacek pisze:
> Moja baza ma compatibility Level 80 (sql2000) server 2008R2 Ent
> I na tym poziomie były tworzone wszystkie obiekty.
> Potem ustawiłem we właściwościach bazy ARITHABORT ON
> i dopiero założyłem indeks (bez tego się nie dało)


A co stoi na przeszkodzie do przestawienia na Level 100?
Jacek (14.11.2011, 14:17)
> A co stoi na przeszkodzie do przestawienia na Level 100?
> PaSkol


Przestawienie też nic nie dało - dalej to samo.
PaSkol (14.11.2011, 14:32)
W dniu 2011-11-14 13:17, Jacek pisze:
>> A co stoi na przeszkodzie do przestawienia na Level 100?

> Przestawienie też nic nie dało - dalej to samo.


No to nie pomogę, trzeba szukać w sieci problemów z ADO i Level 80. Ja u
siebie w przypadku 80 mam poniższy komunikat:

INSERT failed because the following SET options have incorrect settings:
'ARITHABORT'. Verify that SET options are correct for use with indexed
views and/or indexes on computed columns and/or filtered indexes and/or
query notifications and/or XML data type methods and/or spatial index
operations.

A po zmianie na 100 wszystko działa. Baza była zakładana jako Level 80,
ale na SQL2008R Express, więc to nie jest to samo co 2000.

Możesz jeszcze zobaczyć Profilerem co wysyła do serwera SSMS, a co Twoja
aplikacja i ewentualnie doprowadzić do zgodności.

Ta baza z 2000 to była przenoszona przez backup, czy po prostu
podłączona (nie pamiętam na ile to możliwe)? Bo jeśli to drugie, to
spróbowałbym jeszcze backupu.
Jacek (14.11.2011, 14:40)
> Możesz jeszcze zobaczyć Profilerem co wysyła do serwera SSMS, a co Twoja
> aplikacja i ewentualnie doprowadzić do zgodności.
> Ta baza z 2000 to była przenoszona przez backup, czy po prostu podłączona
> (nie pamiętam na ile to możliwe)? Bo jeśli to drugie, to spróbowałbym
> jeszcze backupu.
> PaSkol


Dzięki za wsparcie, z profilerem to cenna rada.
Podobne wątki