SQLCMD包括文件夹中的所有脚本

时间:2014-03-13 14:29:17

标签: sqlcmd sql-server-data-tools

在我的Post Deployment Script中,我想使用这样的通配符将所有脚本文件包含在一个文件夹中:        :r。\ $(ReleaseName)\ * .sql

有办法做到这一点吗?我找不到任何......

2 个答案:

答案 0 :(得分:2)

我得到了它的工作:

<MyFilesPath Include="$(ProjectDir)MyPath\*.sql"/>
<MyFiles Include="@(MyFilesPath->':r %22..\Scripts\%(filename)%(extension)%22%0D%0A', '')"/>

然后我将@MyFiles包含在我的PostScript文件中。

答案 1 :(得分:1)

我采用了一种更容易让我理解的方法。

我只是将代码添加到数据库项目属性页面中的Pre-build事件中,该页面将脚本文件复制到单个文件中。我调用bat文件并将项目路径作为参数传递,因为编辑文件比尝试在属性页中的那个小文本框中编辑要好得多。

$(ProjectDir)PreBuildEvent.bat "$(ProjectDir)"

我将bat的内容设置为:

copy %ProjectDir%DbUpdateScripts\*-Pre.sql %ProjectDir%DbUpdateScripts\AllPreScripts.sql
copy %ProjectDir%DbUpdateScripts\*-Post.sql %ProjectDir%DbUpdateScripts\AllPostScripts.sql

然后只需在实际的部署前和部署后脚本中包含这些文件。

:r .\DbUpdateScripts\AllPreScripts.sql
:r .\DbUpdateScripts\AllPostScripts.sql

最后,如果您有AllPreScripts.sql文件,请将AllPostScripts.sql.gitignore添加到{{1}}文件中,以防止它们被添加到源代码管理中。