我正在尝试修改大型Azure表(20 Gb,500M+记录)中的字段定义。
从nvarchar(max)到nvarchar(16)
ALTER TABLE [dbo].[MyTable] ALTER COLUMN [MyField] [nvarchar](16)但是,我无法在没有超时的情况下找到执行此命令的方法。在Visual和中,我获得了一个
从服务器接收结果时发生了Msg 10054、级别20、状态0、行0的传输级错误.(provider: TCP Provider,error: 0-现有连接被远程主机强制关闭。)
大约30分钟后。几分钟后,当我从Azure Management Portal运行命令时,我得到:
MSG-2,级别11,状态0,行0超时过期.在操作完成或服务器没有响应之前经过的超时时间。
如何在SQL上执行如此长时间运行的查询?
发布于 2015-10-08 18:31:47
尝试v12语句的"WITH (ONLINE = ON)“选项。见这里的例子:
http://sqlperformance.com/2015/02/sql-performance/more-online-operations
发布于 2014-06-04 10:42:40
在SQL中,不能简单地更改大型表上的列。
相反,请执行以下操作:
发布于 2015-05-19 14:53:04
实际上,有一种选择--将您的DB扩展到更高的性能层,进行繁重的工作,并将其缩小。
我有S2数据库,试图改变庞大的表,30分钟后超时。所以我把它放大到P2,在6分钟内修改完成。规模缩小-你将被收取1小时的P2,这是目前1欧元。通常,为了避免创建新表、在活动系统上移动数据维护一致性、重命名表等脏东西,我会在任何时候给1 EURo。
https://stackoverflow.com/questions/21187224
复制相似问题