私は100000レコードのテーブルを持っています。ここでは、ID列である列が1つあります。今、これらのレコードをすべてIdentity列のみに更新する必要があります。テーブル内の値再シードと既存のレコードを削除せずに既存の値のID列をリセットする
DBCC CHECKIDENT ('[Patient]', RESEED, 3000);
私は100000レコードのテーブルを持っています。ここでは、ID列である列が1つあります。今、これらのレコードをすべてIdentity列のみに更新する必要があります。テーブル内の値再シードと既存のレコードを削除せずに既存の値のID列をリセットする
DBCC CHECKIDENT ('[Patient]', RESEED, 3000);
のDBCC CHECKIDENTは、実際のアイデンティティカウンタを変更します、ではない:私はすべての既存のID再シードを更新し、3000
から開始したい私はこのクエリを見つけたが、それは唯一の新しいレコードのために働きます。値を変更するには、「set identity_insert」を使用する必要があります
もう1つの解決策があります。 Patientテーブルと同じ定義の新しいテーブルを作成します(PatientNewと呼ぶことができます)。あなたの必要な値の最初にそのテーブルを再3000 - 1。今、患者テーブルを新しいテーブルにコピーすると、それはあなたの要件に応じてアイデンティティを持っています。古いテーブルを削除し、新しいテーブルの名前を変更します。
delete from PatientNew
dbcc checkident('PatientNew', reseed, 2999)
insert PatientNew(Col2, Col3) select Col2, Col3 from Patient
他のすべての列が含まれています。テーブルのドロップとおそらく一時的な低下に外部キー制約
ALTER TABLE Patient NOCHECK CONSTRAINT ALL
あなたを必要とアクションの名前を変更し、名前を変更した後、再びそれを有効にするには:
ALTER TABLE Patient WITH CHECK CHECK CONSTRAINT ALL
私は私の自己解決策を見つけた
ステップ1 )SQLツールメニュー 手順2)オプションメニュー を選択3)新しいポップアップウィンドウが開き、デザイナー の手順をクリックする4)チェックボックスをオフにする - テーブルの再作成が必要な変更を保存しないeation ステップ5)右のデザインモードで開いてテーブル ステップ6) ステップ7)を削除ID列 ステップ8をクリックして)再びクエリを下回る
alter table tableName
add columnName BIGINT identity(5000,1)
それはちょうど
に動作しますとアイデンティティで削除列を追加
なぜあなたはそれをしたいですか? ID列の値は決してビジネス値ではありません。 – Raj
次のリンクを確認できます。あなたに役立つかもしれません。 http://stackoverflow.com/questions/19155775/how-to-update-identity-column-in-sql-server – Nagahornbill
プロダクションサーバーでこの問題に直面しており、これを修正したいと考えています。何か解決策はありますか? – Parveen