Sql server 重命名表会导致CREATE语句而不是ALTER语句

Sql server 重命名表会导致CREATE语句而不是ALTER语句,sql-server,sql-server-data-tools,Sql Server,Sql Server Data Tools,在.sqlproj中,我更改了表的名称(以及其他更改)。 我在Visual Studio 2012中通过右键单击“重构”选项进行了重命名。 当我尝试发布更改时,部署脚本有一个CREATETABLE命令而不是ALTERTABLE命令用于表重命名。 我在这里做错了什么?您可能会更改一些已经存在的内容,因为脚本创建了表,所以您应该将其保留为CREATE table您在脚本中更改名称不会做任何事,而是尝试更改不存在的表的名称,这显然会导致错误 另外,如果您已经有一个名为foo的表,并且希望将其名称从fo

在.sqlproj中,我更改了表的名称(以及其他更改)。 我在Visual Studio 2012中通过右键单击“重构”选项进行了重命名。 当我尝试发布更改时,部署脚本有一个CREATETABLE命令而不是ALTERTABLE命令用于表重命名。
我在这里做错了什么?

您可能会更改一些已经存在的内容,因为脚本创建了表,所以您应该将其保留为
CREATE table
您在脚本中更改名称不会做任何事,而是尝试更改不存在的表的名称,这显然会导致错误

另外,如果您已经有一个名为
foo
的表,并且希望将其名称从
foo
更改为
bar
,则不会使用Alter table命令,而是使用以下系统存储过程

EXECUTE sp_rename 'dbo.foo', 'bar'

我已经找到了问题的根源。我将脚本发布到的数据库是真实数据库的副本(bacpac)。bacpac缺少dbo.\uu重构日志表,因此在运行脚本时,它忽略了重构日志文件,只是创建了数据库。

该表已经存在,我正在尝试重命名它。但是,重命名会导致部署脚本中出现CREATE而不是ALTER。如果表已经存在,则使用上述语句而不是ALTER table语句。我不确定您是否熟悉我正在使用的数据库更改方法。部署脚本是根据我对项目所做的更改为我生成的。如果进行架构比较,您会看到什么不同?是否有可能列的顺序与原始项目不同,或者聚集索引不同,或者可能导致重建?@PeterSchott,谢谢,但事实证明,_重构日志表丢失了,所以脚本跳过了所有重构步骤,只是创建而不是修改