如何在 SQL Server 2016 或 Azure 中修改时间 table?
How do you modify a temporal table in SQL Server 2016 or Azure?
我在 SQL Azure 中创建了一些临时表,但我不知道如何修改它们。添加新列或修改现有列的最佳方法是什么?
通过脚本。
ALTER TABLE ...
世界正在慢慢掌握 DevOps,而用于处理快速变化的图形用户界面如何并没有真正帮助。
每个更改脚本和修改都应存储在版本控制中,并为现代的、基于云的现实执行,这基本上意味着我们以前可以用一个简单的设计器来做的事情,现在我们通常写成可以应用于数据库集群的脚本,用于重建测试环境等。
我知道这不是最有趣的答案,但为此做好准备对你未来的技能组合至关重要。
有两种方法可以改变时态表:
- 通过 Transact-SQL 脚本。有关详细信息,请参阅 https://msdn.microsoft.com/en-us/library/mt591016.aspx
- 使用与 Visual Studio 集成的 SQL 服务器数据工具。如果您需要在版本控制系统(例如 TFS)中对数据库脚本进行版本控制,这将很方便:https://msdn.microsoft.com/en-us/library/mt204009.aspx
谢谢,
博尔科·诺瓦科维奇 (MSFT)
MSDN 有很多例子,在早期版本的 CTP 中,从 CTP3 开始,你不能在不设置 system_versioning 到 off.But 的情况下改变 Temporal table,你可以做到这一点...这里有几个例子..
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。
Adding a computed column
Adding an IDENTITY column
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.
Adding a COLUMN_SET
Adding a ROWGUIDCOL column or changing existing column to be
ROWGUIDCOL
我在 SQL Azure 中创建了一些临时表,但我不知道如何修改它们。添加新列或修改现有列的最佳方法是什么?
通过脚本。
ALTER TABLE ...
世界正在慢慢掌握 DevOps,而用于处理快速变化的图形用户界面如何并没有真正帮助。
每个更改脚本和修改都应存储在版本控制中,并为现代的、基于云的现实执行,这基本上意味着我们以前可以用一个简单的设计器来做的事情,现在我们通常写成可以应用于数据库集群的脚本,用于重建测试环境等。
我知道这不是最有趣的答案,但为此做好准备对你未来的技能组合至关重要。
有两种方法可以改变时态表:
- 通过 Transact-SQL 脚本。有关详细信息,请参阅 https://msdn.microsoft.com/en-us/library/mt591016.aspx
- 使用与 Visual Studio 集成的 SQL 服务器数据工具。如果您需要在版本控制系统(例如 TFS)中对数据库脚本进行版本控制,这将很方便:https://msdn.microsoft.com/en-us/library/mt204009.aspx
谢谢, 博尔科·诺瓦科维奇 (MSFT)
MSDN 有很多例子,在早期版本的 CTP 中,从 CTP3 开始,你不能在不设置 system_versioning 到 off.But 的情况下改变 Temporal table,你可以做到这一点...这里有几个例子..
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。
Adding a computed column
Adding an IDENTITY column
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.
Adding a COLUMN_SET
Adding a ROWGUIDCOL column or changing existing column to be ROWGUIDCOL