SQL Serverのテーブル内の列のデータ型を変更したいとします。私は、次のステートメントを使用:bigintから列のデータ型をuniqueidentifierに変更します。
ALTER TABLE dbo.tbltest
ALTER COLUMN ID uniqueidentifier
をしかし、それは誤り
オペランドタイプ衝突をスロー:BIGINTはUNIQUEIDENTIFIER
SQL Serverのテーブル内の列のデータ型を変更したいとします。私は、次のステートメントを使用:bigintから列のデータ型をuniqueidentifierに変更します。
ALTER TABLE dbo.tbltest
ALTER COLUMN ID uniqueidentifier
をしかし、それは誤り
オペランドタイプ衝突をスロー:BIGINTはUNIQUEIDENTIFIER
次の手順に従います。 -
1).Firstlyテーブルから古いデータを削除します。
2)。使用ALTER TABLE dbo.tbltest
ALTER COLUMN ID varchar(200)
3)。今再び ALTER TABLE dbo.tbltest
ALTER COLUMN ID uniqueidentifier
は明確にするために、あなたは、直接
をUNIQUEIDENTIFIERする数値から列を変換することはできませんが、数値に変換することができます - > VARCHAR - > UNIQUEIDENTIFIER。 Entity Frameworkのを使っている人に
と互換性がありませんあなたはおそらくで(最初の列を追加する必要があります既定値またはNULL可能なので、既存のデータを持つ行に列を追加することができます)、必要な値または必要な値に更新し、キーを変更します(プライマリキーの場合は新しい列に変更し、このテーブルのキー)、必要に応じて古い列を削除して新しい列を変更します(例:アイデンティティシードの設定、null可能な削除など)。
注:明らかに
、あなたはすべての関係とID列をドロップする、複雑な関係を持つ大規模なデータベースを持っているし、それらを再追加する場合には、巨大な試練です。
多く生成されたモデル(.edmx)を更新する方が簡単です。
はい、Visual Studioでは、不平を言ってデータタイプを更新することができます。実際、.edmxファイルを保存すると、関係が検証されます。あなたが逃した可能性のあるフィールドはすべてエラーとして表示されます。
作業が終わったら、モデルからデータベースを再生成できます。ブーム、完了。
Singhの回答が機能していない場合は、おそらくテーブルを削除して再作成する必要があります。
私はすでにテーブルからすべてのデータを削除していました。 – Visions
を参照してください。その場合は、最初に 'binary(16)'に変更してから 'bigint'に変更することもできます - テストされていませんが、SQL Serverはデータがプロセス内で切り捨てられていない限りこれを許可します。 – Lucero