在SQL Server中将INT转换为BIGINT

sco*_*tus 4 t-sql sql-server sql-server-2005 biginteger type-conversion

SQL 2005,600,000,000行.

我有一个名为Location的表,当前在标识PK列LocationID中使用数据类型INT.我想尝试将此数据类型转换为BIGINT.

我认为以下脚本应该有助于允许插入PK列,但我不确定如何在此处进行表单.

SET IDENTITY_INSERT LOCATION ON /*allows insert into the identity column*/`

SET IDENTITY_INSERT LOCATION OFF /*Returns the identity column to initial state*/`
Run Code Online (Sandbox Code Playgroud)

位置表创建脚本如下:

CREATE TABLE [dbo].[Location](
    [LocationID] [int] IDENTITY(1,1) NOT NULL,
    [JourneyID] [int] NULL,
    [DeviceID] [int] NOT NULL,
    [PacketTypeID] [int] NULL,
    [PacketStatusID] [int] NULL,
CONSTRAINT [Location_PK] PRIMARY KEY CLUSTERED 
(
    [LocationID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [Device_Location_FK1] FOREIGN KEY([DeviceID])
REFERENCES [dbo].[Device] ([DeviceID])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [Device_Location_FK1]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [PacketStatus_Location_FK1] FOREIGN KEY([PacketStatusID])
REFERENCES [dbo].[PacketStatus] ([PacketStatusID])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [PacketStatus_Location_FK1]
GO
ALTER TABLE [dbo].[Location]  WITH CHECK ADD  CONSTRAINT [PacketType_Location_FK1] FOREIGN KEY([PacketTypeID])
REFERENCES [dbo].[PacketType] ([PacketTypeID])
GO
ALTER TABLE [dbo].[Location] CHECK CONSTRAINT [PacketType_Location_FK1]
Run Code Online (Sandbox Code Playgroud)

一个选择,我认为是将数据复制到新表,然后删除旧表,并重新命名新然而,我们将需要被丢弃这个工作的限制.

gbn*_*gbn 5

你对新桌子的想法是要走的路.

在开发服务器上,如果使用表设计器更改数据类型,则可以看到SSMS将生成的脚本.这是一个好的开始.这将在之后添加触发器和约束.

像Red gate SQL Compare这样的工具还允许您检查所有内容是否已创建