私は[uniqueidentifier]を関連するテーブルに対応するデータベース全体のint値に変換する必要があります。これを影響なく生産に導入する最良の方法は何ですか?GUID INTO intをSQLデータベースに変換する方法
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
uniqueidentifierは16バイトです。 intは4です。これは動作しません。そのようなことをする特定の要件はありますか? –
は、実行可能なDMLの形式でサンプルを提供します。 – TheGameiswar
まず、これを本番環境では導入しないで、テスト環境でこれを繰り返し実行します。主キーとしてguidを使用することから、主キーとしてint(場合によってはID)に変更しようとしているように、インパクトは大規模になるでしょう。これはおそらくデータベース内のすべての単一のテーブルを変更する必要があり、おそらくコードの山を変更する必要があり、データベースのサイズと断片化に大きな影響を与えます。要するに、このタイプの変更は、オンラインフォーラムよりも大きなトピックです。おそらくこのプロジェクトのコンサルタントを雇うべきです。 –