代码之家  ›  专栏  ›  技术社区  ›  Keith Sirmons

VS2010数据库项目删除列名更改数据

  •  4
  • Keith Sirmons  · 技术社区  · 15 年前

    有不会删除列数据的设置吗?

    我正在寻找解决这个问题的“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
    

    谢谢您, 基思

    3 回复  |  直到 15 年前
        1
  •  7
  •   Keith Sirmons    15 年前

    展开表及其列。

    右键单击列,然后单击重构->重命名。。。

    选中“预览更改”框,在“新名称”字段中更改名称。

    在数据库项目中,将创建一个显示名称更改的重构日志文件。

    当针对现有数据库部署新架构时,DataDude似乎会查看refactorlog文件和dbo.\u 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
    

    基思

        2
  •  1
  •   MJB    15 年前

    如果表很小,可以使用正确的列创建一个新表,然后从旧表插入到新表中,同时更改列。

    alter table add new_column 然后 update table set new_column=old_column 然后 alter table drop column old_column

    语法当然被简化了。

        3
  •  1
  •   John Bledsoe    15 年前

    visualstudio数据库项目处理模式更改的方式会导致这种混乱。VS很难判断您是重命名了一个列(并且应该保留数据),还是删除了该列并添加了一个不同的列。我的公司在一个数据库模式源代码控制产品上工作了相当长的一段时间,该产品具有所有这些相同的问题。

    K. Scott Allen (referenced by Jeff Atwood) . 本系列文章将为您提供一个更好的数据库版本控制解决方案。