首页 > 代码库 > 阻止保存要求重新创建表的更改

阻止保存要求重新创建表的更改

  在设计“表”的时候,遇到修改数据类型的场景。可是,当我们把数据类型修改之后,点击“保存”按键,却遇到报错:不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行了更改或者启用了”阻止保存要求重新创建表的更改“选项”。

wKioL1SGY9XyAri-AAPDOD8Pfp8290.jpg


  为了简化操作,可以去除“阻止保存要求重新创建表的更改”选项。

wKiom1SGY1KysgeWAAP0ab0t_MY854.jpg


  实际上,SQL Server在后台生成了一系列的脚本重建了这张表。

wKioL1SGY_vRAEj5AAOlyFibvMo435.jpg


/* 为了防止任何可能出现的数据丢失问题,您应该先仔细检查此脚本,然后再在数据库设计器的上下文之外运行此脚本。*/

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_UserTable

(

UserID varchar(50) NOT NULL,

UserName nvarchar(10) NOT NULL,

AddressLine1 nvarchar(50) NULL,

AddressLine2 nvarchar(50) NULL

)  ON [PRIMARY]

GO

ALTER TABLE dbo.Tmp_UserTable SET (LOCK_ESCALATION = TABLE)

GO

IF EXISTS(SELECT * FROM dbo.UserTable)

EXEC(‘INSERT INTO dbo.Tmp_UserTable (UserID, UserName, AddressLine1, AddressLine2)

SELECT CONVERT(varchar(50), UserID), UserName, AddressLine1, AddressLine2 FROM dbo.UserTable WITH (HOLDLOCK TABLOCKX)‘)

GO

DROP TABLE dbo.UserTable

GO

EXECUTE sp_rename N‘dbo.Tmp_UserTable‘, N‘UserTable‘, ‘OBJECT‘ 

GO

ALTER TABLE dbo.UserTable ADD CONSTRAINT

PK_UserTable PRIMARY KEY CLUSTERED 

(

UserID

) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]


GO

COMMIT


本文出自 “我们一起追过的MSSQL” 博客,请务必保留此出处http://jimshu.blog.51cto.com/3171847/1587792

阻止保存要求重新创建表的更改