Je suis en train de tester le déplacement de notre base de données de SQL Server 2005 à 2008. Nous utilisons des CTE pour la pagination. Lors de l'utilisation du texte intégral CONTAINSTABLE, le moteur CTE ne s'exécute pas et génère une erreur.Déclaration SQL Server 2008 CTE et CONTAINSTABLE - Pourquoi l'erreur?
Voici mon travail non code-
WITH results AS (
SELECT ROW_NUMBER() over (ORDER BY GBU.CreateDate DESC) as rowNum,
GBU.UserID,
NULL AS DistanceInMiles
FROM User GBU WITH (NOLOCK)
WHERE 1=1
AND GBU.CountryCode IN (SELECT [Value] FROM fn_Split('USA',','))
AND GBU.UserID IN (SELECT [KEY] FROM CONTAINSTABLE(VW_GBU_Search, *, 'COMPASS'))
)
SELECT * from results
WHERE rowNum BETWEEN 0 and 25
Si je commente la ligne CONTAINSTABLE, l'exécution d'une instruction. Si je n'exécute que l'instruction SELECT (pas le WITH), l'instruction s'exécute correctement.
L'erreur non utile je reçois à ce sujet est:
Msg 0, niveau 11, état 0, ligne 0 Une erreur grave produite sur la commande actuelle. Les résultats, le cas échéant, doivent être ignorés. Msg 0, niveau 20, état 0, ligne 0 Une erreur grave s'est produite sur la commande en cours. Les résultats, si tout, doivent être jetés.
Des suggestions?
vous devez mettre en évidence les lignes de code (comme votre instruction SQL) puis appuyez sur le bouton « code » (101 010) sur la barre d'outils de l'éditeur (ou appuyez sur Ctrl-K de votre clavier) pour bien mettre en forme et syntaxe mettre en évidence ces sections de code! –