Applies ToSQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use)

Sintomi

Si supponga di usare Microsoft SQL Server 2012 o SQL Server 2014. Quando si esegue il manutentore di archiviazione BLOB remoti, lo strumento RBS Maintainer non riesce e viene visualizzato il messaggio di errore seguente:

Avvio delle attività del manutentore. Avvio di Garbage Collection. Analisi di riferimento iniziale. L'analisi di riferimento è completa per il database. BLOB di 113 digitalizzati. Eliminati 0 BLOB nell'intervallo di 0x000000000000000000000000 (esclusivo) in 0x00000000000000b600000002 (inclusi). Questa attività è terminata. Elaborazione totale di 1 unità di lavoro. 0 unità di lavoro erano incomplete. Inizio eliminazione propagazione. Al momento non è disponibile alcun lavoro. Altri client, processi o thread potrebbero essere attualmente in uso in altre attività. Ignorare l'unità di lavoro corrente a causa di un errore. Per altre informazioni, vedere il log del manutentore RBS. [..] Questa attività è terminata. Totale delle unità di lavoro 102 elaborate. le unità di lavoro di 101 erano incomplete. Necessario per eliminare 0 BLOB. Riuscito ad eliminare 0 BLOB, non sono stati trovati 0 BLOB nell'archivio BLOB. Questa attività è terminata. Questa attività è terminata.

Quando si usa Profiler per individuare il problema, viene visualizzato il messaggio di errore seguente:

Msg 50000, livello 16, stato 0, procedura rbs_sp_rethrow_error, errore linea 38RBS. Errore originale: numero 535, gravità 16, stato 0, routine rbs_sp_count, riga 52, messaggio: la funzione DateDiff ha provocato un overflow. Il numero di DateParts che separa due istanze di data/ora è troppo grande. Provare a usare DateDiff con un datepart meno preciso.

Causa

Questo problema si verifica perché una query che controlla il tempo dato che l'ultima esecuzione può riversarsi quando converte un valore in millisecondi. In questo modo la query non riesce e l'attività termina senza elaborare i dati.

Risoluzione

La correzione per questo problema è disponibile nel download del pacchetto di funzionalità più recente per RBS. msi. Se è già presente un'installazione di RBS, è consigliabile eseguire lo script fornito nella sezione "soluzione alternativa" per risolvere temporaneamente il problema.

Scarica il pacchetto di funzionalità di Microsoft SQL server 2014 Service Pack 2 (SP2) Scarica il pacchetto di funzionalità di microsoft SQL Server 2012 Service Pack 4 (SP4)

Soluzione alternativa

Se si dispone di un'installazione esistente di RBS in SQL Server 2012 o SQL Server 2014 che non ha la correzione installata, è possibile usare la procedura alternativa seguente:

  1. In SSMS aprire lo script del passaggio 3 e quindi connettersi all'istanza di SQL Server che ospita il database RBS client a cui si vuole applicare la correzione.

  2. Nello script Sostituisci la stringa "your_RBS_client_database" con il nome effettivo del database client RBS.

  3. Eseguire lo script per applicare la correzione.use [your_RBS_client_database]go if object_id(N'mssqlrbs_resources.rbs_sp_count') is not null drop procedure mssqlrbs_resources.rbs_sp_countgo create procedure mssqlrbs_resources.rbs_sp_count ( @operation smallint, @object smallint = 0, @value bigint = null, @start_time datetime = null, @end_time datetime = null, @description sysname = N'', @message nvarchar(max) = null)asbegin declare @type tinyint, @secondsUsed bit, @seconds float declare @maxDays int = 10; if not exists ( select * from mssqlrbs_resources.rbs_internal_counters where operation = @operation and object = @object and description = @description ) raiserror (N'Internal error in RBS. Attempt to count invalid performance counter. Counter: <%d>.<%d>.<%s>.', 16, 101, @operation, @object, @description) select @type = type, @secondsUsed = seconds_used from mssqlrbs_resources.rbs_internal_counters where operation = @operation and object = @object and description = @description if @object != 0 begin if @value is null raiserror (N'Internal error in RBS. Value not specified for performance counter <%d>.<%d>.<%s>.', 16, 103, @operation, @object, @description) end if @secondsUsed = 1 begin if (@start_time is null) raiserror (N'Internal error in RBS. Start time not specified for performance counter <%d>.<%d>.<%s>.', 16, 102, @operation, @object, @description) set @end_time = isnull(@end_time, getutcdate()) if (@start_time > @end_time) raiserror (N'Internal error in RBS. Start time is after end time. Counter: <%d>.<%d>.<%s>.', 16, 104, @operation, @object, @description) if (datediff(day, @start_time, @end_time) >= @maxDays) begin set @seconds = convert(float, datediff(second, @start_time, @end_time)) end else begin set @seconds = convert(float, datediff(millisecond, @start_time, @end_time)) / 1000 end end update mssqlrbs_resources.rbs_internal_counters set count = count + 1, value = value + @value, squared_value = squared_value + square(@value), min_value = case when min_value is null then @value when (@value < min_value) then @value else min_value end, max_value = case when max_value is null then @value when (@value > max_value) then @value else max_value end, last_value = @value, seconds = seconds + @seconds, squared_seconds = squared_seconds + square(@seconds), min_seconds = case when min_seconds is null then @seconds when (@seconds < min_seconds) then @seconds else min_seconds end, max_seconds = case when max_seconds is null then @seconds when (@seconds > max_seconds) then @seconds else max_seconds end, last_seconds = @seconds, last_update_time = getutcdate(), last_message = @message where operation = @operation and object = @object and description = @description endgo

Stato

Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.

Le community aiutano a porre e a rispondere alle domande, a fornire feedback e ad ascoltare gli esperti con approfondite conoscenze.