我测试了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表,以确定哪些refactors需要对数据库进行处理。

下面是它产生的使用该程序的更改,也在存储过程中引用的列名的代码:

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判断您只需重命名的列(并应保存数据)或删除列,并添加另一个。我公司工作了相当长的时间上有所有这些同样的问题数据库模式的源代码控制产品。

在年底,我开始相信,处理架构更改的最佳方式是,提出的ķ。斯科特·艾伦(杰夫·阿特伍德引用)。本系列文章应该设置你的课程走向更美好的数据库版本控制解决方案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top