Condividi tramite


sp_db_vardecimal_storage_format (Transact-SQL)

Restituisce lo stato corrente del formato di archiviazione vardecimal di un database oppure abilita il formato di archiviazione vardecimal per un database. In SQL Server 2012 i database utente sono sempre abilitati. È richiesto SQL Server 2005 Service Pack 2 o versione successiva.

[!NOTA]

L'abilitazione del formato di archiviazione vardecimal per i database è necessaria solo in SQL Server 2005.

Nota importanteImportante

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 è di tipo sysname e non prevede alcun valore predefinito. 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 è di tipo varchar(3) e non prevede alcun valore predefinito. Se viene specificato il nome di un database ma viene omesso @vardecimal\_storage\_format, viene restituita l'impostazione corrente del database specificato. Questo argomento non ha effetto in SQL Server 2008 o versioni successive.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Set di risultati

Se non è possibile modificare il formato di archiviazione del database, 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 non viene specificato l'argomento @vardecimal\_storage\_format, restituisce le colonne Database Name e Vardecimal State.

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 seguenti circostanze:

  • 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 che un database sia impostato sulla modalità di recupero con registrazione minima. In caso di impostazione di un database su tale modalità, la catena di log è 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, utilizzare 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 AdventureWorks2012 ;
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 AdventureWorks2012, 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 'AdventureWorks2012', 'ON' ;
GO

-- Check the vardecimal storage format state for
-- all databases in the instance.
EXEC sp_db_vardecimal_storage_format ;
GO

USE AdventureWorks2012 ;
GO

EXEC sp_tableoption 'Sales.SalesOrderDetail', 'vardecimal storage format', 1 ;
GO

Vedere anche

Riferimento

Stored procedure del Motore di database (Transact-SQL)