在论坛上看到了一位朋友的帖子,说自己在修改列类型的时候,导致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,