我有一个关于使用 SSDT 构建部署脚本的问题。谁能告诉我是否可以使用 SQLPackage.exe 构建部署脚本,其中源文件不是 dacpac 文件,而是使用 .sql 文件?
为了提供一些背景知识,我在 Visual Studio 2012 中为我的数据库架构创建了一个项目。这很好用,SSDT 可以毫无问题地构建文件夹结构(包含所有 .sql 文件的函数、存储过程等)。
这就是问题所在 - 有问题的数据库来自遗留系统,并且充满了错误。我们不再关心这些错误中的大多数,并且将它们全部修复是不切实际或安全的,因此多年来我们基本上忽略了它们。但是,这意味着我们无法构建项目,因此无法生成 dacpac 文件。现在这并不妨碍我们进行模式比较并将数据库与文件系统(本地 mercurial 存储库)同步。但是,它似乎确实阻止了我们构建部署脚本。
我正在寻找的是一种使用 SQLPackage.exe 构建部署脚本的方法,而无需生成 dacpac 文件。我需要改用文件系统中的 .sql 文件。Visual Studio 将在不构建 dacpac 的情况下生成差异脚本,所以这让我认为必须可以使用 SQLPackage.exe 使用其中一个参数来完成它。
这是一个 SQLPackage.exe 的示例,我想对其进行调整以使用 .sql 文件而不是 dacpac:
sqlpackage.exe /Action:Script /SourceFile:"E:\SourceControl\Project\Database
\test_SSDTProject\bin\Debug\test_SSDTProject.dacpac" /TargetConnectionString:"Data
Source=local;Initial Catalog=TestDB;User ID=abc;Password=abc" /OutputPath:"C:
\temp\hbupdate.sql" /OverwriteFiles:true /p:IgnoreExtendedProperties=True
/p:IgnorePermissions=True /p:IgnoreRoleMembership=True /p:DropObjectsNotInSource=True
这很好用,因为它使用 dacpac 文件。但是,我需要将其指向 .sql 文件所在的文件夹结构。
任何帮助都会很棒。