我在下面提到的表同样我需要将[uniqueidentifier]转换为整个数据库对应的相关表中的int值。在没有影响的情况下将其实施到生产中的最佳方法是什么?
CREATE TABLE [usp].[Test]( [AccountId] [uniqueidentifier] NOT NULL CONSTRAINT [DF_Account_AccountId] DEFAULT (newsequentialid()), [AccountName] nvarchar NOT NULL, [AccountDescription] nvarchar NULL, [AccountStatusId] [uniqueidentifier] NOT NULL, [AccountTypeId] [uniqueidentifier] NOT NULL, [GeoLocation] varchar NULL, [ContactInfoId] [uniqueidentifier] NULL, [ParentId] [uniqueidentifier] NULL, [Encoding] varchar NOT NULL, [IsDeleted] [bit] NULL DEFAULT ((0)), [AccountHeirarchy] nvarchar NULL,
CONSTRAINT [PK_Account] PRIMARY KEY CLUSTERED ( [AccountId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
以下值示例。
AccountId AccountName AccountDescription AccountStatusId AccountTypeId GeoLocation ContactInfoId ParentId Encoding IsDeleted AccountHeirarchy HID
A70D7DCE-4F1F-E211-AAA2-0050568F021A SysAccount Administrator Account A0000000-0000-0000-0000-000000000000 A70D7DCE-4F1F-E211-AAA2-0050568F021B NULL NULL NULL 1 0 NULL
答案 0 :(得分:0)
越早摆脱聚集索引上的guid就越好。我假设您的问题是需要更改的所有外键。
我探索了将整数列并行引入数据库,创建等效关系和逐步淘汰guid的可能性。如果它进展缓慢,我会将guid转换为非聚集索引,并使用整数作为聚簇索引。 这听起来像一个庞大的项目。祝你好运。
答案 1 :(得分:-1)
您可以使用C#脚本将varchar转换为int,方法名称为BitConverter.ToUInt32