sp_db_vardecimal_storage_format (Transact-SQL)
Gibt den aktuellen vardecimal-Speicherformatstatus einer Datenbank zurück oder aktiviert das vardecimal-Speicherformat für eine Datenbank. Ab SQL Server 2008 sind Benutzerdatenbanken immer aktiviert. Datenbanken müssen nur in SQL Server 2005 für das vardecimal-Speicherformat aktiviert werden.
Wichtig
Durch Ändern des vardecimal-Speicherformatstatus einer Datenbank können Sicherung und Wiederherstellung, Datenbankspiegelung, sp_attach_db, Protokollversand sowie die Replikation beeinflusst werden.
Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version). |
Syntax
sp_db_vardecimal_storage_format [ [ @dbname = ] 'database_name']
[ , [ @vardecimal_storage_format = ] { 'ON' | 'OFF' } ]
[;]
Argumente
[ @dbname= ] 'database_name'
Der Name der Datenbank, für die das Speicherformat geändert werden soll. database_name ist vom Datentyp sysname und hat keinen Standardwert. Wenn der Datenbankname ausgelassen wird, wird der vardecimal-Speicherformatstatus aller Datenbanken in der Instanz von SQL Server zurückgegeben.[ @vardecimal\_storage\_format= ] {'ON'|'OFF'}
Gibt an, ob das vardecimal-Speicherformat aktiviert ist. @vardecimal\_storage\_format kann ON oder OFF sein. Der Parameter entspricht varchar(3) und hat keinen Standardwert. Wenn ein Datenbankname angegeben ist, @vardecimal\_storage\_format jedoch ausgelassen wird, wird die aktuelle Einstellung der angegebenen Datenbank zurückgegeben. Dieses Argument hat keine Auswirkungen auf SQL Server 2008 oder höhere Versionen.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Resultsets
Wenn das Datenbankspeicherformat nicht geändert werden kann, gibt sp_db_vardecimal_storage_format einen Fehler zurück. Wenn sich die Datenbank bereits im angegebenen Zustand befindet, bleibt die gespeicherte Prozedur ohne Wirkung.
Wenn das @vardecimal\_storage\_format-Argument nicht bereitgestellt wird, werden die Spalten Database Name und Vardecimal State zurückgegeben.
Hinweise
sp_db_vardecimal_storage_format gibt den vardecimal-Status zurück, kann diesen aber nicht ändern.
sp_db_vardecimal_storage_format schlägt in folgenden Situationen fehl:
In der Datenbank sind aktive Benutzer vorhanden.
Für die Datenbank sind Spiegelungen aktiviert.
In der Edition von SQL Server wird das vardecimal-Speicherformat nicht unterstützt.
Wenn der vardecimal-Speicherformatstatus in OFF geändert werden soll, muss eine Datenbank auf den einfachen Wiederherstellungsmodus festgelegt werden. Wenn eine Datenbank auf den einfachen Wiederherstellungsmodus festgelegt ist, wird die Protokollkette unterbrochen. Führen Sie eine vollständige Datenbanksicherung aus, nachdem Sie den vardecimal-Speicherformatstatus auf OFF festgelegt haben.
Der Status kann nicht in OFF geändert werden, wenn für einige Tabellen die vardecimal-Datenbankkomprimierung verwendet wird. Verwenden Sie zum Ändern des Speicherformats einer Tabelle sp_tableoption. Wenn Sie bestimmen möchten, für welche Tabellen in einer Datenbank das vardecimal-Speicherformat verwendet wird, verwenden Sie die OBJECTPROPERTY-Funktion, und suchen Sie nach der TableHasVarDecimalStorageFormat-Eigenschaft, wie im folgenden Beispiel veranschaulicht.
USE AdventureWorks2012 ;
GO
SELECT name, object_id, type_desc
FROM sys.objects
WHERE OBJECTPROPERTY(object_id,
N'TableHasVarDecimalStorageFormat') = 1 ;
GO
Beispiele
Im folgenden Code werden die Komprimierung in der AdventureWorks2012-Datenbank aktiviert, der Status bestätigt und anschließend die Spalten decimal und numeric in der Sales.SalesOrderDetail-Tabelle komprimiert.
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
Siehe auch
Verweis
Gespeicherte Prozeduren für das Datenbankmodul (Transact-SQL)