SQL Server中的__RefactorLog表 - 是否可以安全删除?

14

我怀疑SSDT会在你指向的任何数据库中创建一个名为__RefactorLog的表。

如果我已经发布了,删除这个表会有什么危害呢?因为我认为在部署时不包含它在模式创建脚本中也没有任何好处。

我个人看不出任何缺点,但我想向这里的专业人士提出这个问题,看看我是否漏掉了什么......

1个回答

19

当您在SSDT中使用重构功能(如重构->重命名)时,SSDT会创建此文件。如果您执行部署并仅清空表格,则它将尝试执行任何旧的重构操作,这可能会导致失败或灾难!

如果您清空了表格,请确保还从项目中的refactorlog.xml文件中删除条目 - 该文件非常明显。

确保不要尝试部署旧的dacpac文件(我猜这种情况不太可能发生)。

Ed


说明: SSDT是SQL Server Data Tools的缩写,是一种用于开发、测试和部署Microsoft SQL Server的集成开发环境(IDE)工具。refactor是重构的意思,dacpac是SQL Server Data-tier Application Package的缩写,是用于部署数据库模式的单个逻辑文件。

6
Ed的回答是准确的。我想强调一下在SSDT项目中最常见的“重构”操作是使用表设计器重命名表中的列。在T-SQL面板中编辑列名并不被视为重构操作,但在表设计器中编辑列名被认为是一种重构。这是一个细微但重要的行为需要注意。 - Steven Green
您可以从SQL文本编辑器中启动重命名操作:1)从设计师T-SQL窗格使用Shift-F10或右键单击,“重构/重命名...”,2)从视图或SPROC使用Ctrl +.,就像在任何其他VS或VSCode编辑器中一样启动清理或重构。(回复@StevenGreen)他正确指出,“普通编辑”不会被分析以进行可能的重命名。 - yzorg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接