In questa pagina
Messaggio
Codice: 10143
Messaggio in italiano: Impossibile creare %1! sulla vista “%2!” perché contiene una funzione finestra di aggregazione o di rango. Rimuovere la funzione dalla definizione della vista oppure non indicizzare la vista.
Messaggio in inglese: Cannot create %S_MSG on view “%.*ls” because it contains a ranking or aggregate window function. Remove the function from the view definition or, alternatively, do not index the view.
Spiegazione
Quando si crea un indice su una vista non è possibile usare le seguenti funzioni finestra, come CUME_DIST, DENSE_RANK, FIRST_VALUE, LAG, LAST_VALUE, LEAD, NTILE, PERCENT_RANK, RANK, ROW_NUMBER.
Le funzioni finestra non possono essere usate nemmeno in campi che non sono indicizzati.
Un elenco di tutti i vincoli nella creazione di indici sulle viste si può trovare qui:
https://docs.microsoft.com/it-it/sql/relational-databases/views/create-indexed-views
Causa
È stata usata una funzione finestra CUME_DIST, DENSE_RANK, FIRST_VALUE, LAG, LAST_VALUE, LEAD, NTILE, PERCENT_RANK, RANK, ROW_NUMBER all’interno di una vista e si sta cercando di creare un indice sulla vista.
Esempio:
CREATE VIEW V_TEST AS SELECT f1, f2, ROW_NUMBER() OVER (PARTITION BY f1 ORDER BY f2) FROM t1
e poi:
CREATE UNIQUE CLUSTERED INDEX [IDX_1] ON [dbo].[V_TEST] (f1 ASC)
Parametri
%1! rappresenta l’indice che si sta tentando di creare
%2! rappresenta la vista su cui si sta tentando di creare l’indice
Soluzione
Non utilizzare le funzioni di aggregazione specificate oppure non indicizzare la vista.
Un commento su “10143 – Impossibile creare %1! sulla vista “%2!” perché contiene una funzione finestra di aggregazione o di rango. Rimuovere la funzione dalla definizione della vista oppure non indicizzare la vista.”