sp_db_vardecimal_storage_format (Transact-SQL)

Добавления: 12 декабря 2006 г.

Возвращает текущее состояние формата хранения vardecimal для базы данных либо включает или отключает этот формат в базе данных. Требуется SQL Server 2005 с пакетом обновления 2 или более поздних версий. Формат хранения vardecimal доступен только в следующих выпусках SQL Server 2005: Enterprise, Developer и Evaluation.

Bb326653.note(ru-ru,SQL.90).gifВажно!
Изменение состояния формата хранения vardecimal для базы данных может повлиять на резервное копирование и восстановление, зеркальное отображение базы данных, sp_attach_db, доставку журналов и репликацию. Дополнительные сведения о формате хранения vardecimal см. в разделе Хранение десятичных данных в виде значений переменной длины.

Синтаксис

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

Аргументы

  • [ @dbname= ] 'database'
    Имя базы данных, формат хранения которой нужно изменить. Аргумент database имеет тип sysname и не имеет значения по умолчанию. Если имя базы данных пропущено, то возвращаются состояния формата хранения vardecimal для всех баз данных в экземпляре SQL Server.
  • [ @vardecimal_storage_format = ] {'ON'|'OFF'}
    Указывает, включен ли формат хранения vardecimal. Аргумент @vardecimal_storage_format может иметь состояния ON или OFF. Аргумент имеет тип varchar(3) и не имеет значения по умолчанию. Если имя базы данных указано, но аргумент @vardecimal_storage_format пропущен, то возвращается текущий параметр указанной базы данных.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Результирующие наборы

Если формат хранения базы данных изменить нельзя, то хранимая процедура sp_db_vardecimal_storage_format возвращает ошибку. Если база данных уже находится в указанном состоянии, то хранимая процедура не вносит никаких изменений.

Замечания

Хранимая процедура sp_db_vardecimal_storage_format завершается неуспешно в следующих случаях:

  • Отсутствуют активные пользователи базы данных.
  • Включено зеркальное отображение базы данных.
  • Выпуск SQL Server не поддерживает формат хранения vardecimal.

Чтобы изменить состояние формата хранения vardecimal на OFF, необходимо переключить базу данных на простую модель восстановления. При переключении базы данных на простую модель восстановления цепочка журналов прерывается. После переключения состояния формата хранения vardecimal на OFF следует создать полную резервную копию базы данных.

Переключение в состояние OFF не будет выполнено, если в таблицах используется сжатие баз данных vardecimal. Формат хранения базы данных изменяется с помощью хранимой процедуры sp_tableoption. Определить, в каких таблицах базы данных используется формат хранения vardecimal, можно с помощью функции OBJECTPROPERTY и поиском свойства TableHasVarDecimalStorageFormat, как показано в приведенном ниже примере.

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

Разрешения

Необходимо разрешение ALTER DATABASE.

Примеры

В следующем примере включается сжатие в базе данных AdventureWorks, подтверждается состояние, а затем сжимаются столбцы decimal и numeric в таблице Sales.SalesOrderDetail.

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

См. также

Справочник

Хранимые процедуры ядра СУБД (Transact-SQL)

Другие ресурсы

Хранение десятичных данных в виде значений переменной длины

Справка и поддержка

Получение помощи по SQL Server 2005