我们目前在构建管道中使用 RedGate 和 Azure DevOps。我正在使用 Visual Studio Build 创建一个新的构建管道。构建抛出错误 SQL71006“每批仅允许一个语句。语句之间可能需要批分隔符,例如“GO”。”
失败的sql是一个CREATE TABLE,之后有一个CREATE NONCLUSTERED INDEX - 两者之间没有GO。如果我在两者之间添加 GO 就可以了。然而,我们当前使用 RedGate 的管道不会因这段代码而失败。
有没有办法告诉 Visual Studio Build 忽略这个错误?如果我们无法更新,我们有数千个文件需要更新。
有没有办法告诉 Visual Studio Build 忽略这个错误?
不确定您的项目结构。但我们可以使用
ContinueOnError
属性来忽略 MSBuild 任务中的错误。有关详细信息,请参阅忽略任务中的错误。
如果您在管道中使用 VSBuild 任务,我们可以启用 control 选项“
continueOnError: true
”,如下所示:
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: 'xxxx'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
continueOnError: true
如果这对您不起作用,并且 SQL 脚本不需要包含在构建过程中,那么您可以更改项目文件并将脚本的
Build Action
属性设置为 None
。
例如:
<ItemGroup>
<Build Include="Tables\Customer.sql" />
<None Include="Scripts\RunPostScriptsGenerated.sql" />
</ItemGroup>
更新:
当将受影响的 SQL 脚本的
Build Action
属性设置为 Build
时,我可以重现该问题。详情请看截图。
当我将
Build Action
属性更改为 None
后,一切都按预期工作。
因此,请尝试使用 Visual Studio 在本地构建项目,以确定哪些文件需要更改属性。然后将所有受影响文件的
Build Action
属性更改为 None
。之后再试一次,看看它是否在管道中工作。