SQL Server修改表结构导致表丢失

本文通过一起实例讲述了在SQL Server中修改表结构时,由于Primary文件组空间不足,可能导致表丢失的问题。SQL Server在改变列类型时会先删除原表,创建新表并插入数据,然后删除旧表。因此,对大表修改列数据类型需谨慎,并确保有足够的表空间。
摘要由CSDN通过智能技术生成

在论坛上看到了一位朋友的帖子,说自己在修改列类型的时候,导致Primary文件组满,最终导致表丢失这一严重后果。


http://bbs.csdn.net/topics/390328757


后来想了一下,SQL Server在修改列类型的时候,会Drop整个表,然后新建一个新表,插入数据,然后删除旧表,将新表重命名。


生成的脚本如下:

/* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_Fin_pinyin
	(
	id int NOT NULL,
	hz nvarchar(1) NULL,
	duyin nvarchar(128) NULL
	)  ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_Fin_pinyin SET (LOCK_ESCALATION = TABLE)
GO
IF EXISTS(SELECT * FROM dbo.Fin_pinyin)
	 EXEC('INSERT INTO dbo.Tmp_Fin_pinyin (id,
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值