sp_db_vardecimal_storage_format (Transact-SQL)

Si applica a:SQL Server

Restituisce lo stato corrente del formato di archiviazione vardecimal di un database oppure abilita il formato di archiviazione vardecimal per un database. A partire da SQL Server 2008 (10.0.x), i database utente sono sempre abilitati. L'abilitazione dei database per il formato di archiviazione vardecimal è necessaria solo in SQL Server 2005 (9.x).

Nota

SQL Server 2019 (15.x) supporta il formato di archiviazione vardecimal; Tuttavia, poiché la compressione a livello di riga raggiunge gli stessi obiettivi, il formato di archiviazione vardecimal è deprecato. Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.

Importante

La modifica dello stato del formato di archiviazione vardecimal di un database può influire su backup e recupero, mirroring del database, sp_attach_db, log shipping e replica.

Sintassi

sp_db_vardecimal_storage_format [ [ @dbname = ] 'database_name']   
    [ , [ @vardecimal_storage_format = ] { 'ON' | 'OFF' } ]   
[;]  

Argomenti

[ @dbname= ] 'database_name'
Nome del database per il quale deve essere modificato il formato di archiviazione. database_name è sysname, senza impostazione predefinita. Se il nome del database viene omesso, viene restituito lo stato del formato di archiviazione vardecimal di tutti i database nell'istanza di SQL Server.

[ @vardecimal_storage_format= ] {'ON'|' OFF'}
Specifica se il formato di archiviazione vardecimal è abilitato. @vardecimal_storage_format può essere ON oppure OFF. Il parametro è varchar(3), senza impostazione predefinita. Se viene specificato il nome di un database ma viene omesso @vardecimal_storage_format, viene restituita l'impostazione corrente del database specificato.

Importante

Questo argomento non ha alcun effetto su SQL Server 2008 (10.0.x) o versioni successive.

Valori del codice restituito

0 (operazione completata) o 1 (operazione non riuscita)

Set di risultati

Se il formato di archiviazione del database non può essere modificato, sp_db_vardecimal_storage_format restituisce un errore. Se lo stato corrente del database corrisponde a quello specificato, la stored procedure non produce alcun effetto.

Se l'argomento @vardecimal_storage_format non viene specificato, restituisce le colonne Nome database e Stato Vardecimal.

Osservazioni:

sp_db_vardecimal_storage_format restituisce lo stato di vardecimal ma non consente di modificare tale stato.

sp_db_vardecimal_storage_format avrà esito negativo nelle circostanze seguenti:

  • Non sono presenti utenti attivi nel database.

  • È abilitato il mirroring del database.

  • L'edizione di SQL Server non supporta il formato di archiviazione vardecimal.

Per modificare lo stato del formato di archiviazione vardecimal su OFF, è necessario impostare un database su modello di recupero con registrazione minima. Quando un database è impostato sul modello di recupero con registrazione minima, la catena di log viene interrotta. Dopo aver impostato lo stato del formato di archiviazione vardecimal su OFF, eseguire un backup completo del database.

La modifica dello stato in OFF avrà esito negativo se sono presenti tabelle in cui viene utilizzata la compressione di database di tipo vardecimal. Per modificare il formato di archiviazione di una tabella, usare sp_tableoption. Per determinare le tabelle di un database in cui viene utilizzato il formato di archiviazione vardecimal, utilizzare la funzione OBJECTPROPERTY e cercare la proprietà TableHasVarDecimalStorageFormat, come illustrato nell'esempio seguente.

USE AdventureWorks2022;  
GO  
SELECT name, object_id, type_desc  
FROM sys.objects   
 WHERE OBJECTPROPERTY(object_id,   
   N'TableHasVarDecimalStorageFormat') = 1 ;  
GO  

Esempi

Tramite il codice seguente viene abilitata la compressione nel database AdventureWorks2022, viene verificato lo stato e quindi vengono compresse le colonne decimal e numeric della tabella Sales.SalesOrderDetail.

USE master ;  
GO  
  
EXEC sp_db_vardecimal_storage_format 'AdventureWorks2022', 'ON' ;  
GO  
  
-- Check the vardecimal storage format state for  
-- all databases in the instance.  
EXEC sp_db_vardecimal_storage_format ;  
GO  
  
USE AdventureWorks2022;  
GO  
  
EXEC sp_tableoption 'Sales.SalesOrderDetail', 'vardecimal storage format', 1 ;  
GO  

Vedi anche

stored procedure motore di database (Transact-SQL)