我在SQL Azure中创建了一些时态表,但我无法弄清楚如何修改它们。添加新列或修改现有列的最佳方法是什么?
答案 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。
添加计算列
添加IDENTITY列
添加SPARSE列或将现有列更改为SPARSE 历史表设置为DATA_COMPRESSION = PAGE或 DATA_COMPRESSION = ROW,这是历史表的默认值。
添加COLUMN_SET
- 醇>
添加ROWGUIDCOL列或将现有列更改为 ROWGUIDCOL
答案 1 :(得分:0)
通过脚本。
ALTER TABLE ...
世界正在慢慢掌握DevOps,以及处理快速变化的图形用户界面如何真正起到帮助的作用。
每个更改脚本和修改都应存储在版本控制中,并针对现代的基于云的现实执行,这基本上意味着我们以前可以用简单的设计器做什么,现在我们通常写为脚本可以应用于数据库集群,以重建测试环境等。
我知道这不是最有趣的答案,但为此做好准备对您未来的技能至关重要。
答案 2 :(得分:0)
有两种方法可以改变时态表:
谢谢, Borko Novakovic(MSFT)