在SQL Azure中安全地更改列数据类型

时间:2014-01-16 19:50:56

标签: sql sql-server tsql azure azure-sql-database

SQL Azure具有每个表具有聚簇索引所需的依赖关系。我有两个彼此具有FK依赖关系的表,其中一个表使用了。需要将该数据类型从VARCHAR更改为INT。这要求暂时删除索引和FK关系以修复任何潜在危险的数据,然后将列更改为相同的数据类型,然后恢复FK和索引。

如何在不抛出SQL Azure错误的情况下完成这项工作?

1 个答案:

答案 0 :(得分:0)

没有特别在SQL Azure 上尝试过这个,但我建议将所有元数据更改放在一个事务中,并且为了安全起见在两个表上获得独占锁:

BEGIN TRANSACTION

  SELECT 1 FROM FirstTable WITH (TABLOCKX)
  SELECT 2 FROM SecondTable WITH (TABLOCKX)

  -- drop FKs, alter tables etc.


COMMIT TRANSACTION