sp_db_vardecimal_storage_format (Transact-SQL)
适用于:SQL Server
返回数据库的当前 vardecimal 存储格式状态,或为数据库启用 vardecimal 存储格式。 从 SQL Server 2008(10.0.x 开始),始终启用用户数据库。 仅在 SQL Server 2005(9.x)中才需要为 vardecimal 存储格式启用数据库。
注意
SQL Server 2019 (15.x) 支持 vardecimal 存储格式;但是,由于行级压缩达到了相同的目标,因此已弃用 vardecimal 存储格式。 在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。
重要
更改数据库的 vardecimal 存储格式状态可能会影响备份和恢复、数据库镜像、sp_attach_db、日志传送以及复制。
语法
sp_db_vardecimal_storage_format [ [ @dbname = ] 'database_name']
[ , [ @vardecimal_storage_format = ] { 'ON' | 'OFF' } ]
[;]
参数
[ @dbname= ] “database_name”
要更改其存储格式的数据库的名称。 database_name为 sysname,无默认值。 如果省略数据库名称,则会返回 SQL Server 实例中所有数据库的 vardecimal 存储格式状态。
[ @vardecimal_storage_format= ] {'ON'|'OFF'}
指定是否启用 vardecimal 存储格式。 @vardecimal_storage_format 可以是 ON 或 OFF。 参数为 varchar(3),没有默认值。 如果提供数据库名称但却省略 @vardecimal_storage_format,则返回指定数据库的当前设置。
重要
此参数对 SQL Server 2008(10.0.x)或更高版本没有影响。
返回代码值
0(成功)或 1(失败)
结果集
如果无法更改数据库存储格式,则 sp_db_vardecimal_storage_format 返回错误。 如果数据库已处于指定的状态,则此存储过程无效。
@vardecimal_storage_format如果未提供参数,则返回列数据库名称和 Vardecimal State。
注解
sp_db_vardecimal_storage_format 将返回 vardecimal 状态,但不能更改 vardecimal 状态。
在以下情况下,sp_db_vardecimal_storage_format 将失败:
数据库中有活动用户。
已启用数据库进行镜像。
SQL Server 版本不支持 vardecimal 存储格式。
若要将 vardecimal 存储格式状态更改为 OFF,必须将数据库设置为简单的恢复模式。 将数据库设置为简单的恢复模式时,日志链将中断。 在将 vardecimal 存储格式状态设置为 OFF 后,请执行完整数据库备份。
如果有表使用 vardecimal 数据库压缩,则将 vardecimal 存储格式状态更改为 OFF 的操作将失败。 若要更改表的存储格式,请使用 sp_tableoption。 若要确定数据库中有哪些表使用 vardecimal 存储格式,请使用 OBJECTPROPERTY
函数并搜索 TableHasVarDecimalStorageFormat
属性,如以下示例所示。
USE AdventureWorks2022;
GO
SELECT name, object_id, type_desc
FROM sys.objects
WHERE OBJECTPROPERTY(object_id,
N'TableHasVarDecimalStorageFormat') = 1 ;
GO
示例
下面的代码在 AdventureWorks2022
数据库中启用压缩,确认状态,然后压缩 Sales.SalesOrderDetail
表中的 decimal 和 numeric 列。
USE master ;
GO
EXEC sp_db_vardecimal_storage_format 'AdventureWorks2022', 'ON' ;
GO
-- Check the vardecimal storage format state for
-- all databases in the instance.
EXEC sp_db_vardecimal_storage_format ;
GO
USE AdventureWorks2022;
GO
EXEC sp_tableoption 'Sales.SalesOrderDetail', 'vardecimal storage format', 1 ;
GO
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈