MS SQL Server更改列定义的最快方法

MS SQL Server更改列定义的最快方法,sql,sql-server,Sql,Sql Server,我的任务是将表中有3200万行的表的列数据类型从smallint更改为int。要求尽可能减少停机时间(基本上是实现这一点的最快方法)。 我们正在使用SQLServer2000 请帮忙 有两个选项,您可以在线复制该表,然后使用sp_rename将其关闭 另一种方法是添加新列,填充它,然后删除旧列并重命名新列 32m行可以被视为大行或小行,具体取决于行的宽度。有两个选项,您可以在线复制该表,然后使用sp_rename将其关闭 另一种方法是添加新列,填充它,然后删除旧列并重命名新列 32m行可以视为大

我的任务是将表中有3200万行的表的列数据类型从smallint更改为int。要求尽可能减少停机时间(基本上是实现这一点的最快方法)。 我们正在使用SQLServer2000


请帮忙

有两个选项,您可以在线复制该表,然后使用sp_rename将其关闭

另一种方法是添加新列,填充它,然后删除旧列并重命名新列


32m行可以被视为大行或小行,具体取决于行的宽度。

有两个选项,您可以在线复制该表,然后使用sp_rename将其关闭

另一种方法是添加新列,填充它,然后删除旧列并重命名新列


32m行可以视为大行或小行,具体取决于行的宽度。

无论您做什么,都不要使用Enterprise Manager更改数据类型。它将要做的是创建一个全新的表,填充它,重命名旧表,将新表重命名为旧表的名称,并在一个讨厌的事务中将其全部删除,将表锁定数小时。

无论您做什么,都不要使用Enterprise Manager更改数据类型。它将要做的是创建一个全新的表,填充它,重命名旧表,将新表重命名为旧表的名称,然后在一个糟糕的事务中将其全部删除,并将表锁定数小时。

我非常有信心,基准测试将显示sp_重命名将是停机时间最少的选项sp_重命名将很快,但是,如果行很宽,表复制可能需要很长时间,因此您可能需要在sp_重命名之前对目标表运行更新。在原位版本中,您可以填充和更新任何更改的行,然后对列进行重命名。我想,这真的取决于什么是停机时间,以及维护窗口的其余部分是什么,这将完全取决于表上正在发生的活动量。我很有信心,基准测试将表明sp_重命名将是停机时间最低的选项sp_重命名将很快,但是,如果行很宽,表复制可能需要很长时间,因此您可能需要在sp_重命名之前对目标表运行更新。在原位版本中,您可以填充和更新任何更改的行,然后对列进行重命名。我想,这真的取决于什么是停机时间,以及维护窗口的其余部分是什么,这将完全取决于表上发生了多少活动。