Azure DevOps中SqlAzureDacpacDeployment任务删库报语法错误怎么解决
问题根因
报错提示的-指向你要删除的数据库名demo-dev-restore中的连字符。SQL Server语法规则要求:当标识符(数据库名、表名、字段名等)包含非字母数字的特殊字符,或是与SQL关键字重名时,必须使用特殊符号包裹才能被正确解析,否则解析器会将连字符识别为语法符号,触发语法错误。
解决方案
修改任务配置中的sqlInline字段,用方括号包裹带连字符的数据库名即可,修改后的完整任务配置如下:
- task: SqlAzureDacpacDeployment@1 inputs: azureSubscription: 'connect-using-spn-demo-dev' AuthenticationType: 'server' ServerName: 'abc-sql-server.database.windows.net' DatabaseName: 'master' SqlUsername: 'saadminuser' SqlPassword: 'abcd@1234' deployType: 'InlineSqlTask' sqlInline: drop database [demo-dev-restore] IpDetectionMethod: 'AutoDetect' displayName: Dropping database
补充说明
- 方括号是SQL Server原生支持的标识符包裹方式,兼容性最优,不需要额外开启配置
- 若你的SQL实例默认开启了
QUOTED_IDENTIFIER参数,也可以使用双引号包裹数据库名:drop database "demo-dev-restore" - 后续所有针对包含特殊字符的标识符的SQL操作,都需要按以上规则包裹,避免同类语法报错
内容的提问来源于stack exchange,提问作者amitsuneja
相关产品推荐
相关产品推荐

