SQL Server Forum / DB Engine / SQL Server CE / March 2008
Search fails, but only for a specific sequence
|
|
Thread rating:  |
Puddles - 08 Feb 2008 15:19 GMT This is weird! My medical database works just fine and has done since ages, until someone treid to look for a medicin begining with 'ney...'
Major Error 0x8007007A, Minor Error 0
> SELECT * FROM t_artikel WHERE NAME LIKE 'ney%' Der an einen Systemaufruf übergebene Datenbereich ist zu klein.
OK, so it's a German installation, but the issue is not hardware relevant: same on any Mobile device and on my PC. Varying the search string usually works, like 'ne%' is OK and 'n_y%' is ok, but 'new%' fails as does 'ney_%'.
Can anyone tell me what is going on here?
Thanks in advance.
Ginny Caughey [MVP] - 08 Feb 2008 15:29 GMT What are the medicines you would expect to find in that range of values? I'm guessing that accented characters specific to German might be causing the result you're seeing.
Assuming that you have an index on Name, do you get the same result using TableDirect access? The reason I ask is that using TableDirect no longer uses the query processor but it does still use the index order.
 Signature Ginny Caughey Device Application Development MVP
www.wasteworks.com Software for Solid Waste Management
> This is weird! My medical database works just fine and has done since > ages, [quoted text clipped - 12 lines] > > Thanks in advance. Puddles - 11 Feb 2008 14:07 GMT Hallo Ginny,
Using TableDirect would imply moving the entire table into the PDA's memory and paring it there with C#... then why bother with the database?
I do not think there are any strange characters causing the system to go crazy - the looser search for 'ne%' works and includes everything that should be returned by 'ney%'!
I have created a workaround by adding the DESC parameter to the index definiton (yes, the name colunm has it's own index), though I rather fear this has simply moved the bug to a new location (I wonder which customer will discover it first?).
> What are the medicines you would expect to find in that range of values? I'm > guessing that accented characters specific to German might be causing the [quoted text clipped - 20 lines] > > > > Thanks in advance. Ginny Caughey [MVP] - 11 Feb 2008 16:29 GMT Puddles,
You wouldn't load the entire table into memory with TableDirect since you'd specify an index name and range. But in any case since adding DESC changes the behavior to the one you want, I'd expect there to be a value somewhere between 'ne' and 'ney' that is causing the result you see. I think if you look at the names in that range you'll get more insight what exactly is happening. If you do, be sure to tell the rest of us!
 Signature Ginny Caughey Device Application Development MVP
www.wasteworks.com Software for Solid Waste Management
> Hallo Ginny, > [quoted text clipped - 40 lines] >> > >> > Thanks in advance. Puddles - 14 Feb 2008 08:57 GMT Hallo Ginny,
neat tool, this TableDirect... how come I had never discovered it in over three years of Mobile development? Huge speed advantage over SQL queries, but (and it is a big 'but') there is no easy way to implement DISTINCT. Three options are 1. a new table with only unique elements (blows the database size), 2. filter row for row in C# (slow) or 3. use the ToTable() function of a DataView (memory hungry). Hummm, now it looks like the SQL query is infact the better option!
All very interesting and my original issue has solved itself anyway: a new production with changed data (happens every 14 days) - in effect the same as producing the index using DESC. But I think this is ignoring the real problem - the index was faulty and this must be regarded as a bug by the developers at Microsoft! Who know where it will appear next!
> Puddles, > [quoted text clipped - 49 lines] > >> > > >> > Thanks in advance. Ginny Caughey [MVP] - 14 Feb 2008 12:23 GMT Well, TableDirect is a bit of a secret ;-) but I think people who do know about it don't use if often (including me) because using T-SQL is more natural for most developers and easier. It is fast though, as you found, and in low memory situations it can be the only viable option.
I don't know if your index was faulty or not since you didn't show a list of the data values that were indexing "incorrectly". If the index is wrong, I can report that to Microsoft to get it resolved, but they'll want to see a reproducible example.
 Signature Ginny Caughey Device Application Development MVP
www.wasteworks.com Scalehouse and Billing Software for Waste Management
> Hallo Ginny, > [quoted text clipped - 77 lines] >> >> > >> >> > Thanks in advance. Puddles - 14 Feb 2008 13:29 GMT Hallo Ginny,
Obviously I could give you my database to test - but it is over 50Mb big! Please let me know how I can deliver this.
I did look at the data relevant to an index over this area of the data and I can assure you there was nothing fishy there! Basically, if the data was bad, why is it being delivered without a problem using the shorter LIKE string? Apart from that, what iconstitutes a special character in a Unicode database?????
> Well, TableDirect is a bit of a secret ;-) but I think people who do know > about it don't use if often (including me) because using T-SQL is more [quoted text clipped - 87 lines] > >> >> > > >> >> > Thanks in advance. Ginny Caughey [MVP] - 14 Feb 2008 14:43 GMT What I need is for you to provide a very small app that creates the database and adds enough values to demonstrate the issue. I'm not doubting your word or anything like that, I just need something to pass along to the developers. I'd be interested in any characters in the key column with values > 127, but whatever it takes to reproduce the problem is what I need.
Thanks,
 Signature Ginny Caughey Device Application Development MVP
www.wasteworks.com Scalehouse and Billing Software for Waste Management
> Hallo Ginny, > [quoted text clipped - 119 lines] >> >> >> > >> >> >> > Thanks in advance. Puddles - 14 Feb 2008 14:52 GMT Hallo Ginny,
like I said, a SPECIFIC production of my database displays this unusual feature: either you take this database in it's completness or nothing! A connection from SQL Server Managemant Studio is all you need to issue a select with the specific LIKE values.
> What I need is for you to provide a very small app that creates the database > and adds enough values to demonstrate the issue. I'm not doubting your word [quoted text clipped - 127 lines] > >> >> >> > > >> >> >> > Thanks in advance. Jin - 14 Feb 2008 18:34 GMT > Hallo Ginny, > [quoted text clipped - 162 lines] > > > >> >> >> > Thanks in advance. If it's a specific DB among many that behaves this way, it could be due to corruption. DB's have been known to get corrupted, especially the index.
- Jin
Ginny Caughey [MVP] - 14 Feb 2008 19:28 GMT Good point, Jin.
 Signature Ginny Caughey Device Application Development MVP
www.wasteworks.com Scalehouse and Billing Software for Waste Management
On Feb 14, 9:52 am, Puddles <Pudd...@discussions.microsoft.com> wrote:
> Hallo Ginny, > [quoted text clipped - 205 lines] > > > >> >> >> > Thanks in advance. If it's a specific DB among many that behaves this way, it could be due to corruption. DB's have been known to get corrupted, especially the index.
- Jin
E®!k \/!sser - 15 Feb 2008 07:44 GMT Hi Ginny , Puddels,
This sounds pretty much like the issue I run into useing the OleDB provider and SqlServer CE. I found a limitation on characterfields > 127 also. See the thread at http://groups.google.nl/group/microsoft.public.sqlserver.ce/browse_thread/thread /93ae1aded52d6020/3d6f1b571ff3a0e2?lnk=gst&q=erik+127#3d6f1b571ff3a0e2
or
http://tinyurl.com/23dgru
Erik
> What I need is for you to provide a very small app that creates the > database and adds enough values to demonstrate the issue. I'm not doubting [quoted text clipped - 133 lines] >>> >> >> > >>> >> >> > Thanks in advance. E®!k \/!sser - 15 Feb 2008 08:35 GMT Sorry, I have misread, and confused Charvalue > 127 with Char Columnwidth > 127
Erik
Ginny Caughey [MVP] - 15 Feb 2008 12:17 GMT Hi Erik,
Yes the column width bug with the OleDb provider is a strange one, but easily reproducible. Since I don't know what the data values that Puddles is seeking aren't found correctly, I can't tell if the char values > 127 might be a factor or not.
 Signature Ginny Caughey Device Application Development MVP
www.wasteworks.com Scalehouse and Billing Software for Waste Management
> Sorry, I have misread, and confused Charvalue > 127 with Char Columnwidth > > 127 > > Erik rgeorge - 20 Mar 2008 17:58 GMT Hi!
We ran into this problem ourselves just recently. In our case a select with a single where condition fails. The condition is a simple 'like' against an indexed nvarchar(255) column. If we change the direction of the index to desc, it works with one value, and fails with others, so you're right about changing the direction is not a perfect solution. Our best advice is to use parameters instead of plain text based sql statements. If you use a parameter to construct your where condition it always work with any value. The only drawback is that the query becomes somewhat slower. We think the whole problem is MBCS related, it has something to do with collation, string comparison or alike. I'd guess someone forgot to multiply the buffer size by 2 somewhere... If you look for this error code you'll find some MBCS and COM related issues. We still join you in waiting for the exact answer as to the root of this problem and a perfect solution as well.
> This is weird! My medical database works just fine and has done since ages, > until someone treid to look for a medicin begining with 'ney...' [quoted text clipped - 10 lines] > > Thanks in advance.
|
|
|