列名の変更に関するデータをドロップVS 2010のデータベースプロジェクト

StackOverflow https://stackoverflow.com/questions/3016913

質問

私は、Visual Studio 2010の新しいデータベースプロジェクトの機能をテストし、テーブル内の列の名前を変更したいのです。私は、スクリプトを作成して名前を変更し、データベースに対してそれを展開しました。生成されたスクリプトは、ちょうど列をドロップし、正しい名前で新しい列を追加しましたが、すべてのデータが失われました。

列のデータを削除しません設定はありますか?

私はこの問題への「DataDude」解決策を探しています。 (存在する場合)。

PRINT N'Altering [dbo].[Users]...';

GO
ALTER TABLE [dbo].[Users] DROP COLUMN [TestX];

GO
ALTER TABLE [dbo].[Users]
    ADD [Testn] NVARCHAR (50) NULL;

GO

ありがとう、 キース

役に立ちましたか?

解決

を使用するスキーマビュービューをクリックして - >データベーススキーマビュー

テーブルとその列を展開します。

右の列をクリックし、リファクタリングをクリック - > [名前の変更...

変更は、変更のプレビューボックスで新しい名前]フィールドに名前が確認されています。

注意が列名だけでなく、その列を参照することができるストアドプロシージャではないだけを変化させる。

インサイドrefactorlogファイルは番組名の変更が作成されたデータベースプロジェクトます。

新しいスキーマを既存のデータベースに対してデプロイされている場合、

は、DataDudeがデータベースに対して処理する必要があるリファクタリングを決定するためにrefactorlogファイルとdbo._Refactorlogテーブルを見ることが表示されます。

ここでは、変化にもストアドプロシージャで参照された列名をこの手順を用いて生成されたコードであります

EXECUTE sp_rename @objname = N'[dbo].[Users].[TestF]', @newname = N'TestG', @objtype = N'COLUMN';

GO
PRINT N'Altering [dbo].[ListUsers]...';

GO
ALTER PROCEDURE [dbo].[ListUsers]

AS
    SELECT [ID], [FirstName], [LastName], [TestG]
    FROM Users
RETURN 0
GO

キース

他のヒント

テーブルが小さい場合は、

は、あなたが行くように列を変更し、正しい列を持つ新しいテーブルを作成し、新しいものに古いテーブルから挿入することができます。

テーブルが大きく、あなたがテーブル全体をコピーする時、RAM、または努力のいずれかを買う余裕ができない場合、次のことができます その後、alter table add new_column その後、update table set new_column=old_column alter table drop column old_column

の構文はもちろん、簡素化されます。

混乱のこの種のに適してVisual Studioのデータベースプロジェクトハンドルスキーマ変更する方法。あなたは、単に列を名前を変更(およびデータを保存する必要があります)または列を削除し、別のものを追加した場合はVSを伝えることは非常に困難です。私の会社は、これらの同じ問題のすべてを持っていたデータベーススキーマソース制御製品にかなり長い間働いていました。

最後に、私はハンドルスキーマの変更への最善の方法は、その<のhref = "http://www.codinghorror.com/blog/2008/02/get-your-によって提案されていることを信じるようになりましたデータベースアンダーバージョンcontrol.html」REL = "nofollowをnoreferrer"> K。スコット・アレン(ジェフ・アトウッドによって参照)に。記事のこのシリーズは、優れたデータベースのバージョン管理ソリューションに向けてのコースであなたを設定する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top