sp_db_vardecimal_storage_format (Transact-SQL)

Zwraca informację o bieżącym stanie formatu przechowywania vardecimal bazy danych lub włącza obsługę tego formatu przez bazę.W programie SQL Server 2008 bazy danych użytkowników zawsze domyślnie obsługują ten format.Wymaga programu SQL Server 2005 z dodatkiem Service Pack 2 lub nowszego.Format przechowywania vardecimal jest dostępny tylko w wersjach Enterprise, Developer i Evaluation programu SQL Server.

Uwaga

Włączanie bazy danych do formatu magazynu vardecimal jest konieczny tylko w SQL Server 2005.

Important noteImportant Note:

Zmiana stanu vardecimal przechowywania formatu bazy danych może mieć wpływ na kopii zapasowych i odzyskiwanie, dublowanie, bazy danych sp_attach_db, wysyłanie dziennika i replikacja.Aby uzyskać informacje o formacie vardecimal przechowywania zobacz Przechowywanie danych dziesiętny jako zmienna długość.

sp_db_vardecimal_storage_format [ [ @dbname = ] 'database_name'] 
    [ , [ @vardecimal_storage_format = ] { 'ON' | 'OFF' } ] [;]

Argumenty

  • [ @dbname= ] 'database_name'
    Is the name of the database for which the storage format is to be changed.database_name is sysname, with no default.Jeżeli pominięto nazwę bazy danych, magazynowania vardecimal formatowania stan wszystkich baz danych w wystąpieniu programu SQL Server są zwracane.

  • [ @ vardecimal_storage_format = {"ON"|"OFF"}
    Określa, czy format przechowywania vardecimal jest włączony.Zmienna @vardecimal_storage_format może mieć wartość ON lub OFF.Parametr jest typu varchar(3) i nie ma wartości domyślnej.Jeśli nazwa bazy danych jest podana, jednak nie określono zmiennej @vardecimal_storage_format, są zwracane bieżące ustawienia wskazanej bazy.Argument nie działa w programie SQL Server 2008 ani nowszych wersjach.

Wartości kodów powrotnych

0 (sukces) lub 1 (brak)

Zestawy wyników

Jeśli nie można zmienić formatu przechowywania w bazie danych, procedura składowana sp_db_vardecimal_storage_format zwraca błąd.Gdy baza już znajduje się w docelowym stanie, wykonanie procedury nie powoduje żadnych skutków.

Jeśli @ vardecimal_storage_format argument nie zostanie podana, zwraca kolumny Nazwa bazy danych and the Państwo Vardecimal.

Remarks

sp_db_vardecimal_storage_format zwraca stan vardecimal, ale nie można zmienić stanu vardecimal.

sp_db_vardecimal_storage_format nie powiedzie się w następujących okolicznościach:

  • W bazie danych istnieją aktywni użytkownicy.

  • W ustawieniach bazy danych włączono funkcję dublowania.

  • To wydanie programu SQL Server nie obsługuje formatu magazynu vardecimal.

Aby można było zmienić wartość stanu formatu przechowywania vardecimal na OFF, baza musi się znajdować w trybie odzyskiwania prostego.Włączenie trybu odzyskiwania prostego powoduje przerwanie łańcucha dzienników.Po zmianie stanu przechowywania vardecimal na OFF należy wykonać pełną kopię zapasową bazy danych.

Próba zmiany stanu na OFF nie powiedzie się, jeśli w bazie danych istnieją tabele z włączoną kompresją formatu przechowywania vardecimal.W celu zmiany formatu przechowywania stosowanego w tabeli należy użyć procedury składowanej sp_tableoption.Aby ustalić, w których tabelach bazy danych obowiązuje format przechowywania, należy za pomocą funkcji OBJECTPROPERTY poszukać właściwości TableHasVarDecimalStorageFormat, tak jak to pokazano na przykładzie poniżej.

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

Przykłady

Poniższy kod umożliwia kompresji w AdventureWorks bazy danych, potwierdza, stan, a następnie kompresuje kolumny liczbowe i dziesiętne w Sales.SalesOrderDetail Tabela.

USE master ;
GO

EXEC sp_db_vardecimal_storage_format 'AdventureWorks', 'ON' ;
GO

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

USE AdventureWorks ;
GO

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