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_db
log 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