sp_db_vardecimal_storage_format (Transact-SQL)

Si applica a: SQL Server

Restituisce lo stato del formato di archiviazione vardecimal corrente di un database o abilita un database per il formato di archiviazione vardecimal. In SQL Server 2008 (10.0.x) e versioni successive i database utente sono sempre abilitati. Tuttavia, poiché la compressione a livello di riga raggiunge gli stessi obiettivi, il formato di archiviazione vardecimal è deprecato. L'abilitazione dei database per il formato di archiviazione vardecimal è necessaria solo in SQL Server 2005 (9.x).

Importante

La modifica dello stato del formato di archiviazione vardecimal di un database può influire sul backup e sul ripristino, sul mirroring del database, sul sp_attach_dblog shipping e sulla replica.

Sintassi

sp_db_vardecimal_storage_format
    [ [ @dbname = ] N'dbname' ]
    [ , [ @vardecimal_storage_format = ] 'vardecimal_storage_format' ]
[ ; ]

Argomenti

[ @dbname = ] N'dbname'

Nome del database per il quale deve essere modificato il formato di archiviazione. @dbname è sysname, con un valore predefinito .NULL 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 = ] 'vardecimal_storage_format'

Specifica se il formato di archiviazione vardecimal è abilitato. @vardecimal_storage_format è varchar(3), con il valore predefinito NULL. @vardecimal_storage_format può essere ON o OFF. Se viene specificato un nome di database ma @vardecimal_storage_format viene omesso, viene restituita l'impostazione corrente del database specificato.

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

Valori del codice restituito

0 (esito positivo) o 1 (errore).

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, sp_db_vardecimal_storage_format restituisce le colonne Database Name e .Vardecimal State

Osservazioni:

sp_db_vardecimal_storage_format restituisce lo stato vardecimal , ma non può modificare lo stato vardecimal .

sp_db_vardecimal_storage_format ha 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 in OFF, è necessario impostare un database sul modello di recupero con registrazione minima. Quando un database è impostato su recupero semplice, la catena di log viene interrotta. Eseguire un backup completo del database dopo aver impostato lo stato del formato di archiviazione vardecimal su OFF.

La modifica dello stato in OFF ha esito negativo se sono presenti tabelle che usano la compressione del database vardecimal . Per modificare il formato di archiviazione di una tabella, usare sp_tableoption. Per determinare quali tabelle in un database usano il formato di archiviazione vardecimal , usare la OBJECTPROPERTY funzione e cercare la TableHasVarDecimalStorageFormat proprietà , 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