sp_db_vardecimal_storage_format (Transact-SQL)

Возвращает текущее состояние формата хранения vardecimal для базы данных либо включает этот формат в базе данных. В SQL Server 2012 пользовательские базы данных всегда включены. Требуется SQL Server 2005 с пакетом обновления 2 или более поздняя версия.

ПримечаниеПримечание

Включение формата хранения vardecimal для баз данных необходимо только в SQL Server 2005.

Важное примечаниеВажно!

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

Синтаксис

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

Аргументы

  • [ @dbname= ] 'database_name'
    Имя базы данных, формат хранения которой нужно изменить. Аргумент database_name имеет тип sysname и не имеет значения по умолчанию. Если имя базы данных пропущено, то возвращаются состояния формата хранения vardecimal для всех баз данных в экземпляре SQL Server.

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

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

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

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

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

Если аргумент @vardecimal\_storage\_format не указан, то возвращаются столбцы Database Name и Vardecimal State.

Замечания

Процедура sp_db_vardecimal_storage_format возвращает состояние vardecimal, но не может изменить его.

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

  • Отсутствуют активные пользователи базы данных.

  • Включено зеркальное отображение базы данных.

  • Выпуск SQL Server не поддерживает формат хранения vardecimal.

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

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

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

Примеры

В следующем коде включается сжатие в базе данных AdventureWorks2012, подтверждается состояние, а затем сжимаются десятичные и числовые столбцы в таблице 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

См. также

Справочник

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