Hej <b>På fråga 1 (som även svarar lite på fråga 2).</b> Tack för tipset!Maximala antalet tabeller i en SELECT-sats
Jag använder SQL Server SP4
Nu har jag ärvt en databas med en stored procedure som returnerar felet
"Could not allocate ancillary tabel for view or function resolution. The maximum number of tables in a query (260) was exceeded."
Proceduren är rätt komplex, den läser mellan två databaser och ställer frågor mot en rad vyer och en funktion men knappast mot totalt 260 stycken tabeller. Problemet är att jag inte är säker och vill verkligen veta att det är detta som är problemet. Jag har uppgraderat från SP3 till SP4 efter inrådan härifrån http://support.microsoft.com/kb/828269/ . Tyvärr hjälpte inte det.
Den funktion (User Defined Function) består av sex stycken SELECT-satser sammanbundna med UNION.
Funktionen frågor mot en och samma vy (bara en tabell) men är av typen
...
SELECT IN(SELECT IN(SELECT IN...)
UNION
SELECT IN(SELECT IN)
UNION
SELECT IN (värde)
..
Tar jag bort en av dessa SELECT-satser kan jag köra proceduren.
Mina frågor är alltså -->
1) Finns det något enkelt sätt att se hur många tabeller en SELECT-sats nyttjar?
2) Om jag nu har slagit i taket (260 tabeller) måste jag antagligen skriva om frågan. Problemet är bara att jag inte kan nyttja temporära tabeller i det här fallet. Finns det något genväg? Indexering? "Fakeade" temporära tabeller...?
Tacksam för svar
// DanielSv: Maximala antalet tabeller i en SELECT-sats
Här är det en som varit med om samma sak som dig.
Han bifogar matematiken bakom:
<b>
Could not allocate ancillary table for view or function resolution
I received the error message "Could not allocate ancillary table for view or function resolution.
The maximum number of tables in a query (256) was exceeded."
This was because I had created a chain of views, many of which used the "union" SQL statement.
e.g. view 1, 3 queries joined with the union statement
view 2, 2 queries
view 3, 5 queries
view 4, 4 queries
view 5, 3 queries
3 * 2 * 5 * 4 * 3 is greater than 256, and caused this error.
Rewriting some of the views to use CASE statements in the select statement, rather than the union statement rectified the problem.</b>
/HåkanSv:Maximala antalet tabeller i en SELECT-sats
Jag hittade en lite skum UNION i vyn som funktionen efterfrågar och hade inte tänkt på att denna UNION gör att antalet tabeller dubbleras vid varje fråga.
Med vänliga hälsningar
// Daniel