【问题标题】:Convert INT to BIGINT in SQL Server在 SQL Server 中将 INT 转换为 BIGINT
【发布时间】:2011-11-28 14:12:34
【问题描述】:

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*/`

位置表创建脚本如下:

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]

我认为一种选择是将数据复制到新表中,然后删除旧表并重命名新表,但是我们需要删除一些约束才能使其正常工作。

【问题讨论】:

    标签: sql-server sql-server-2005 tsql type-conversion biginteger


    【解决方案1】:

    您对新表的想法是可行的方法。

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

    Red gate SQL Compare 之类的工具还允许您检查所有内容是否已创建正常

    【讨论】:

    • 感谢您的回复....不知道您的意思。本文:lisazhou.wordpress.com/2008/07/16/… 解释。但是,在选择脚本选项后尝试保存文本文件时,我看到:不允许保存更改。您疯狂的更改需要删除并重新创建以下表。您要么对无法重新创建的表进行了更改,要么启用了选项阻止保存需要重新创建表的更改。结果文件不包含会产生修正的脚本。
    • 对不起,我明白了,在更改数据类型之前先删除 CONSTRAINTS,现在可以看到 SCRIPT。很有帮助,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 2017-06-03
    • 2012-07-20
    • 2021-05-16
    • 2019-10-03
    相关资源
    最近更新 更多