azure - 如何修改 SQL Server 2016 或 Azure 中的时态表?

标签 azure azure-sql-database temporal-database

我已经在 SQL Azure 中创建了一些时态表,但我不知道如何修改它们。添加新列或修改现有列的最佳方法是什么?

最佳答案

MSDN有很多例子,在早期版本的 CTP 中,如果不将 system_versioning 设置为 off,则无法更改临时表。但是从 CTP3 开始,您可以这样做...这里有一些示例..

ALTER TABLE dbo.Department 
   ALTER COLUMN  DeptName varchar(100); 

ALTER TABLE dbo.Department 
   ADD WebAddress nvarchar(255) NOT NULL  
   CONSTRAINT DF_WebAddress DEFAULT 'www.mycompany.com'; 

ALTER TABLE dbo.Department 
   ADD TempColumn INT; 

GO 

ALTER TABLE dbo.Department 
   DROP COLUMN TempColumn; 


/* Setting IsHidden property for period columns. 
Use ALTER COLUMN <period_column> DROP HIDDEN to clear IsHidden flag */ 


ALTER TABLE dbo.Department 
   ALTER COLUMN SysStartTime ADD HIDDEN; 

ALTER TABLE dbo.Department 
   ALTER COLUMN SysEndTime ADD HIDDEN;

MSDN 还建议在事务中进行任何方案更改,如下所示。

BEGIN TRAN 
---set system versioning to off
ALTER TABLE [dbo].[CompanyLocation] SET (SYSTEM_VERSIONING = OFF); 
ALTER TABLE [CompanyLocation] ADD Cntr INT IDENTITY (1,1); 
ALTER TABLE [dbo].[CompanyLocationHistory] ADD Cntr INT NOT NULL DEFAULT 0; 
--specifying history table is needed with out which ,SQL adds a new history table
ALTER TABLE [dbo].[CompanyLocation]  
SET  
( 
SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[CompanyLocationHistory]) 
); 
COMMIT ;

您可能想知道为什么我们需要关闭系统版本控制,正如我上面所说,从 ctp3.0 开始不需要它就可以完成,这是因为有一些限制..

您不能使用直接 ALTER 来更改以下架构。对于这些类型的更改,请设置 SYSTEM_VERSIONING = OFF。

  1. Adding a computed column

  2. Adding an IDENTITY column

  3. Adding a SPARSE column or changing existing column to be SPARSEwhen the history table is set to DATA_COMPRESSION = PAGE or DATA_COMPRESSION = ROW, which is the default for the history table.

  4. Adding a COLUMN_SET

  5. Adding a ROWGUIDCOL column or changing existing column to be ROWGUIDCOL

关于azure - 如何修改 SQL Server 2016 或 Azure 中的时态表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36274830/

相关文章:

azure - 通过脚本启用/禁用 Azure 经典云服务上的反恶意软件扩展

sql-server-2008 - 如何检测 SQL 的版本(例如 SQL 2008 或 SQL Azure)

sql - 时态表中包含旧日期的种子数据 - SQL Server

azure - Microsoft 365 动态组验证规则错误(Memberof)

.net - 使用 Azure 应用服务和/或通知中心向多个应用发送推送通知

c# - 在 C# 中异步创建新 DocumentDB 文档的问题

sql-server - sql azure 中的替代 xp_cmdshell

azure - SQL Azure 支持关系数据库吗?

sql - 使用 SQL 检测异常间隔