Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用sqlpackage.exe生成重命名表的脚本?_Sql_Sql Server_Sql Server Data Tools_Sql Scripts_Sqlpackage - Fatal编程技术网

如何使用sqlpackage.exe生成重命名表的脚本?

如何使用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

我有两个数据库,一些数据库开发和一些数据库质量保证。这两个数据库彼此相同

我已经为这两个数据库创建了一个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/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”

  • 意见:-

  • 而不是重命名在步骤1中修改的表。它生成了创建表的脚本,如下所示

    `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无法区分重命名和删除/创建。它只能比较源模式和目标模式,不知道您的意图。