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

时间:2016-03-29 03:24:29

标签: azure azure-sql-database temporal-database

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

3 个答案:

答案 0 :(得分:2)

MSDN有很多例子,在早期版本的CTP中,你不能改变Temporal表而不将system_versioning设置为off.But从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. 添加计算列

  2.   
  3. 添加IDENTITY列

  4.   
  5. 添加SPARSE列或将现有列更改为SPARSE   历史表设置为DATA_COMPRESSION = PAGE或   DATA_COMPRESSION = ROW,这是历史表的默认值。

  6.   
  7. 添加COLUMN_SET

  8.   
  9. 添加ROWGUIDCOL列或将现有列更改为   ROWGUIDCOL

  10.   

答案 1 :(得分:0)

通过脚本。

ALTER TABLE ... 

世界正在慢慢掌握DevOps,以及处理快速变化的图形用户界面如何真正起到帮助的作用。

每个更改脚本和修改都应存储在版本控制中,并针对现代的基于云的现实执行,这基本上意味着我们以前可以用简单的设计器做什么,现在我们通常写为脚本可以应用于数据库集群,以重建测试环境等。

我知道这不是最有趣的答案,但为此做好准备对您未来的技能至关重要。

答案 2 :(得分:0)

有两种方法可以改变时态表:

  1. 通过Transact-SQL脚本。有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/mt591016.aspx
  2. 使用与Visual Studio集成的SQL Server数据工具。如果您需要在版本控制系统(例如TFS)中对数据库脚本进行版本化,这很方便:https://msdn.microsoft.com/en-us/library/mt204009.aspx
  3. 谢谢, Borko Novakovic(MSFT)