如何使用sqlpackage.exe生成重命名表的脚本?
我有两个数据库,一些数据库开发和一些数据库质量保证。这两个数据库彼此相同 我已经为这两个数据库创建了一个DACPAC文件。some-db-dev.dacpac和some-db-qa.dacpac(表中有“A”和列“Test”。表中还有一些虚拟记录) 在此之后,我执行了以下步骤:如何使用sqlpackage.exe生成重命名表的脚本?,sql,sql-server,sql-server-data-tools,sql-scripts,sqlpackage,Sql,Sql Server,Sql Server Data Tools,Sql Scripts,Sqlpackage,我有两个数据库,一些数据库开发和一些数据库质量保证。这两个数据库彼此相同 我已经为这两个数据库创建了一个DACPAC文件。some-db-dev.dacpac和some-db-qa.dacpac(表中有“A”和列“Test”。表中还有一些虚拟记录) 在此之后,我执行了以下步骤: 从某个db dev数据库中将表“A”重命名为“ARenamed” 生成“some db dev”的DACPAC,并将其存储为名称“some db dev” 我在指挥下面开火:- sqlpackage/a:Script/s
sqlpackage/a:Script/sf:“C:\Users\some.user\Desktop\some-db-dev.dacpac”/tf:“C:\Users\some.user\Desktop\some-db-qa.dacpac”/tdn:“some-db-qa”/op:“C:\Users\some.user\Desktop\diffscript.sql”
`GO
PRINT N'Creating [dbo].[ARenamed]...';
GO
CREATE TABLE [dbo].[ARenamed] (
[Id] NCHAR (10) NULL,
[Name] NCHAR (10) NULL,
[Test] NCHAR (10) NULL
);`
我使用的命令是否有问题
任何帮助都是值得的。我认为您需要使用
MSBuild
。这是一个如何生成脚本项目和数据库的示例
MsBuild.exe "PATH_TO_SQL_PROJ_FILE" ^
/p:SqlPublishProfilePath="PATH_TO_PUBLISH_PROFILE" ^
/p:UpdateDatabase=False ^
/t:Build,Publish
要在SSDT中重命名表,需要使用重构工具“右键单击表并进行重构重命名”。发生的情况是,这会在“RefactorLog.xml”中添加一个条目-如果您有其中一个条目,那么在创建部署时会生成一个
sp_rename
,另一个条目则会从这里看到的内容中删除,然后创建
见:
最后一节“重命名对象”介绍了如何执行此操作
Ed您是否使用SQL Server数据库项目重命名重构执行重命名?如果不是,dacpac将不知道目的是重命名而不是删除/创建。@DanGuzman否,我没有从SSDT项目执行重命名操作。我从sql server手动重命名了表,然后报告DACPAC。表确实在SQL Server数据库中被重命名。由于您没有使用重构操作进行更改,SSDT无法区分重命名和删除/创建。它只能比较源模式和目标模式,不知道您的意图。