在SQL Server中多次运行alter table alter column语句是否有任何负面影响?
假设我改变了列的数据类型和可空性,如下所示:
--create table
create table Table1
(
Column1 varchar(50) not null
)
go
--insert some records
insert into Table1 values('a')
insert into Table1 values('b')
go
--alter once
alter table Table1
alter column Column1 nvarchar(250) not null
go
--alter twice
alter table Table1
alter column Column1 nvarchar(250) not null
go
上面的sql集都可以,我已经测试了这些。我还可以测试alter语句中的属性。问题是,在更改之前检查列是否已经可以为空是否有任何好处。
第一次更改后,SQL Server是否已经确定该表已被更改,因此第二个alter基本上什么也没做?
不同版本的SQL Server是否存在关于如何处理它的差异?
谢谢, ILIAS
答案 0 :(得分:1)
这是仅元数据操作。
它不必读取或写入属于Dim obj as new ExpandoObject
obj.test1 = "test1"
Set obj.test2 = new ExpandoObject
obj.test2.test = "test"
的任何数据页。但这并不是一个无操作。
它仍然会启动一个事务,获取表上的架构修改锁,并在Table1
中更新此表中行的modified
列(通过{{1}向我们公开) } sys.sysschobjs
}中的列。
此外,由于表已被修改,任何引用该表的执行计划都需要在下次使用时重新编译。