Delen via


sp_db_vardecimal_storage_format (Transact-SQL)

Van toepassing op:SQL Server

Geeft de huidige vardecimale opslagformaat van een database terug of schakelt een database in voor vardecimale opslagformaat. In SQL Server 2008 (10.0.x) en latere versies zijn gebruikersdatabases altijd ingeschakeld. Omdat compressie op rijniveau echter dezelfde doelen bereikt, wordt het vardecimale opslagformaat verouderd. Het inschakelen van databases voor het vardecimale opslagformaat is alleen nodig in SQL Server 2005 (9.x).

Belangrijk

Het wijzigen van de vardecimale opslagformaat van een database kan invloed hebben op back-up en herstel, databasespiegeling, sp_attach_dblog shipping en replicatie.

Syntaxis

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

Arguments

[ @dbname = ] N'dbname'

De naam van de database waarvoor het opslagformaat moet worden gewijzigd. @dbname is sysname, met een standaardwaarde van NULL. Als de databasenaam wordt weggelaten, wordt de vardecimale opslagformaat status van alle databases in de instantie van SQL Server teruggegeven.

[ @vardecimal_storage_format = ] 'vardecimal_storage_format'

Specificeert of het vardecimale opslagformaat is ingeschakeld. @vardecimal_storage_format is varchar(3), met een standaard van NULL. @vardecimal_storage_format kan zijn ON of OFF. Als een databasenaam wordt opgegeven maar @vardecimal_storage_format wordt weggelaten, wordt de huidige instelling van de gespecificeerde database teruggegeven.

Dit argument heeft geen effect op SQL Server 2008 (10.0.x) en latere versies.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Resultaatset

Als het databasegeheugenformaat niet kan worden gewijzigd, sp_db_vardecimal_storage_format geeft het een foutmelding terug. Als de database al in de gespecificeerde toestand is, heeft de opgeslagen procedure geen effect.

Als het argument @vardecimal_storage_format niet wordt gegeven, sp_db_vardecimal_storage_format retournert de kolommen Database Name en de Vardecimal State.

Opmerkingen

sp_db_vardecimal_storage_format geeft de vardecimale toestand terug, maar kan de vardecimale toestand niet veranderen.

sp_db_vardecimal_storage_format faalt onder de volgende omstandigheden:

  • Er zijn actieve gebruikers in de database.
  • De database is ingeschakeld voor mirroring.
  • De editie van SQL Server ondersteunt geen vardecimale opslagformaat.

Om de status van het vardecimale opslagformaat te veranderen naar OFF, moet een database worden ingesteld op het eenvoudige herstelmodel. Wanneer een database op eenvoudige herstel wordt gezet, wordt de logketen verbroken. Maak een volledige database-back-up nadat je de vardecimale opslagformatstatus op OFFhebt gezet.

Het wijzigen van de status naar OFF faalt als er tabellen zijn die vardecimale databasecompressie gebruiken. Om het opslagformaat van een tabel te wijzigen, gebruik je sp_tableoption. Om te bepalen welke tabellen in een database het vardecimale opslagformaat gebruiken, gebruik je de OBJECTPROPERTY functie en zoek je naar de TableHasVarDecimalStorageFormat eigenschap, zoals getoond in het volgende voorbeeld.

USE AdventureWorks2022;
GO

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

Voorbeelden

De volgende code maakt compressie in de AdventureWorks2025 database mogelijk, bevestigt de toestand en comprimeert vervolgens decimale en numerieke kolommen in de Sales.SalesOrderDetail tabel.

USE master;
GO

EXECUTE sp_db_vardecimal_storage_format 'AdventureWorks2022', 'ON';
GO

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

USE AdventureWorks2022;
GO

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