首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查表的SYSTEM_VERSIONING是否打开?

如何检查表的SYSTEM_VERSIONING是否打开?
EN

Database Administration用户
提问于 2018-09-25 14:29:23
回答 2查看 7.6K关注 0票数 12

我知道Server 2016让我们像这样使用SYSTEM_VERSIONING:

代码语言:javascript
复制
CREATE TABLE EmpSalary  
(    
     EmpID int NOT NULL PRIMARY KEY CLUSTERED  
   , SalaryAmt decimal (10,2) NULL  
   , SalaryBeginDT datetime2 GENERATED ALWAYS AS ROW START NOT NULL  
   , SalaryEndDT datetime2 GENERATED ALWAYS AS ROW END NOT NULL  
   , PERIOD FOR SYSTEM_TIME (SalaryBeginDT, SalaryEndDT)     
)    
WITH (SYSTEM_VERSIONING = ON);

此外,要使其停用,只需更改表:

代码语言:javascript
复制
ALTER TABLE EmpSalary SET (SYSTEM_VERSIONING = OFF );

我的问题是如何检查表的SYSTEM_VERSIONING是否打开,然后更改表?

EN

回答 2

Database Administration用户

发布于 2018-09-25 14:38:54

您可以查询sys.tables

代码语言:javascript
复制
ALTER TABLE EmpSalary SET (SYSTEM_VERSIONING = On );
select name, temporal_type, temporal_type_desc from sys.tables where name = 'EmpSalary'

| name      | temporal_type | temporal_type_desc              |
|-----------|---------------|---------------------------------|
| EmpSalary | 2             | SYSTEM_VERSIONED_TEMPORAL_TABLE |
代码语言:javascript
复制
ALTER TABLE EmpSalary SET (SYSTEM_VERSIONING = OFF );
select name, temporal_type, temporal_type_desc from sys.tables where name = 'EmpSalary'

| name      | temporal_type | temporal_type_desc |
|-----------|---------------|--------------------|
| EmpSalary | 0             | NON_TEMPORAL_TABLE |
票数 8
EN

Database Administration用户

发布于 2019-11-09 00:03:11

或者,您可以检查它的OBJECTPROPERTY:TableTemporalType。

下面的代码将执行逻辑检查,以确定它是否为时态表,如果是,则禁用系统版本控制。

代码语言:javascript
复制
IF OBJECTPROPERTY(OBJECT_ID('EmpSalary'), 'TableTemporalType') = 2
    ALTER TABLE EmpSalary SET (SYSTEM_VERSIONING = OFF)
票数 7
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/218517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档