【问题标题】:Mass change column default values in database project数据库项目中的批量更改列默认值
【发布时间】:2015-01-27 20:23:39
【问题描述】:

我有一个 Visual Studio 2013 数据库项目,我想将默认为 newid() 的所有 GUID 列更改为 newsequentialid()

使用以下查询来识别列:

SELECT so.name AS table_name, 
    sc.name AS column_name, 
    sm.text AS default_value
FROM sys.sysobjects so
JOIN sys.syscolumns sc ON sc.id = so.id
LEFT JOIN sys.syscomments SM ON sm.id = sc.cdefault
WHERE so.xtype = 'U'
    AND sm.text = '(newid())'
ORDER BY so.[name], sc.colid

62个表共有62列。

除了逐个访问每个表定义并更改默认值之外,还有其他方法可以在 Visual Studio 中执行此操作吗?

【问题讨论】:

  • 如果该查询为您提供了表名,那么您可以动态构建alter 语句以循环更改表。例如'alter table ' + result.tablename + ' change ....'
  • 这将改变位于数据库服务器上的实际数据库,而不是构成数据库项目的 .sql 文件。
  • 在项目中的所有 *.sql 文件中查找和替换将可以在项目中执行此操作。不过,不确定它将如何处理对服务器的更改。我会先尝试查找/替换,然后看看您是否需要以某种方式调整重构日志以处理重构。
  • 在文件中查找和替换正是我想要的。对服务器的更改是通过模式比较或发布脚本完成的,因此 Visual Studio 负责编写删除/重新创建命名约束的脚本。

标签: visual-studio-2013 default database-project


【解决方案1】:

在项目中的所有 *.sql 文件中查找和替换可以在项目中执行此操作。我会先尝试查找/替换,然后看看您是否需要以某种方式调整重构日志以处理重构。

【讨论】:

    猜你喜欢
    • 2014-06-03
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多