Visual Studio DataBase Project重命名列

时间:2015-09-14 14:47:39

标签: visual-studio-2013 database-project

我有一个Visual Studio数据库项目,似乎有关于此类项目的小而粗略的文档。

问题:我想重命名一个列。

问题:我要重命名列的表中包含数据,因此每次生成脚本时,我都会使用这段代码导致脚本爆炸,因为表中有数据。 / p>

 IF EXISTS (select top 1 1 from [dbo].[res_file_submission])
RAISERROR (N'Rows were detected. The schema update is terminating because data loss might occur.', 16, 127) WITH NOWAIT

我不知道如何绕过这个,我真的不相信删除这一行就是答案,我已经取消选择'阻止增量部署,如果可能发生数据丢失'选项,但这又似乎没有差。

更新:列有一个约束,这似乎是原因。

3 个答案:

答案 0 :(得分:1)

您可以通过部署前和部署后脚本来处理此问题。

创建预部署脚本以备份表并删除其数据:

 //count up the days, until we've done all of them in the month
 while ( $day_num <= $days_in_month  ) { 
     echo "<td> $day_num ".date("D",mktime(0,0,0,$month,$day_num,$year))."</td>"; 
     $day_num++; 
     $day_count++;

     //Make sure we start a new row every week
     if ($day_count > 7) {
         echo "</tr><tr>";
         $day_count = 1;
     }
 } 

创建一个恢复数据的部署后脚本:

if (OBJECT_ID('TempDB..#MyTableBackup') is null)
begin
    -- backup data to a temp table
    SELECT *
    INTO #MyTableBackup
    FROM MyTable

    -- TODO: If you have foreign key constraints that reference MyTable, you'll need to disable them here.

    -- delete the data in your table
    DELETE MyTable
end

由于预部署脚本清空了您的表,因此列重命名将在部署的常规部分期间发生,而不会进行&#34;阻止增量部署...&#34;警告。

请确保在部署成功后从项目中删除这些脚本,以便在下次部署期间不会重新运行这些脚本。

答案 1 :(得分:1)

您可以使用命令(重命名查询)简单地在后期构建部署脚本中重命名列名。它允许您更改列的名称,也不会损害该表中的数据。

答案 2 :(得分:0)

问题不在于我无法重命名列,而是我需要重命名列然后部署重命名,而比较脚本一直阻止重命名。

解决方案:在数据库项目中重命名我的列,包括对它的引用,然后将脚本添加到目标上的预部署脚本以执行相同的名称更改。然后在我的数据库上运行预部署脚本来更新它,然后运行比较,现在不会包括列重命名,因为目标和源都具有相同的名称。