Sintomi
Si supponga di avere una tabella che contiene una colonna con tipo di dati date e di avere implementato l'indice di archivio di colonne raggruppate (CCSI) in questa tabella in Microsoft SQL Server 2014. Quando si tenta di eseguire una query sulla tabella usando il tipo di dati Data come qualificatore, potrebbero essere restituiti dati non corretti. Per esempio:create table tab2(c1 int, c2 date, c3 varchar(10)) CREATE CLUSTERED COLUMNSTORE INDEX [CCI_tab2] ON [tab2] WITH (DROP_EXISTING = OFF)GO select *FROM tab2 S -- Table with clustered columnstore indexWHERE S.c2 = @date -- variable of Date datatype
Risoluzione
Informazioni sui Service Pack
Per risolvere il problema, ottenere Service Pack 1 per SQL Server 2014.
Per altre informazioni su SQL Server 2014 Service Pack 1 (SP1), vedere bug corretti in SQL server 2014 Service Pack 1.
Informazioni sull'aggiornamento cumulativo
Questo problema è stato risolto per la prima volta nel seguente aggiornamento cumulativo di SQL Server.
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. Vedere gli ultimi aggiornamenti cumulativi per SQL Server:
Ulteriori informazioni
Usare il codice seguente per riprodurre il problema:create table tab1(c1 int, c2 date) insert into tab1values (1 , '2000-01-01') CREATE NONCLUSTERED INDEX [idxtab1c2] ON tab1( c2 ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) create table tab2(c1 int, c2 date, c3 varchar(10)) insert into tab2values (1, '2000-01-01', 'test') CREATE CLUSTERED COLUMNSTORE INDEX [CCI_tab2] ON [tab2] WITH (DROP_EXISTING = OFF)GO create table t([runId] int not null, [scalingFactor] float not null) -- REPRO QUERY. Below batch is expected to return a row but we don’t get ittruncate table tDECLARE @date DATE, @numDates INT INSERT INTO t VALUES(1, 1)DECLARE @date DATE, @numDates INTSELECT @date = max(R.c2) , @numDates = COUNT(distinct R.c2)FROM tab1 R INNER JOIN t D ON R.c1 = D.runId select *FROM tab2 S -- CCIWHERE S.c2 = @date
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".