Mag*_*ier 27 sql-server deployment ssdt visual-studio-2013
我已经使用过几次部署后脚本,并且总是直观地使用构建操作“PostDeploy”,因为它就是这样。现在我第一次尝试按照脚本模板中的内置指令使用":r somescript.sql"
语法。
此行立即被标记为错误:
“':' 旁边的 SQL80001 语法错误”
我找到了将 PDS 设置为“无”的建议。这没有帮助,错误仍然存在。我在这里缺少什么?
Sol*_*zky 26
假设错误发生在构建过程中,并且您没有任何实际的语法错误,这是一个简单的
:r path\to\file.sql
Run Code Online (Sandbox Code Playgroud)
那么当被导入的文件不存在时也会发生错误。请检查文件的位置。如果您没有提供绝对路径,则该路径将相对于解决方案文件夹(至少对我而言是)。
如果在开发过程中,您想查看构建过程报告的错误,请确保在 Visual Studio 的 T-SQL 编辑器中启用“SQLCMD 模式”。按钮栏中最右侧有一个带有“!”的按钮。在其中应该启用此功能。或者你可以进入SQL菜单,选择Transact-SQL Editor ->,选择Execution Settings ->,最后选择SQLCMD Mode。现在,当您执行脚本时,它将正确解释:r
,就像构建/发布过程一样。
此外,您的部署后脚本 (PDS) 需要将其构建操作设置为PostDeploy。如果它被设置为None那么它将被 SSDT 构建过程完全跳过。
有效错误
这是因为:r somescript.sql
不是有效的 sql。您看到了语法错误,这正是错误消息所述的内容。
SQL80001:“:”附近的语法不正确。
SQLCMD 模式
部署后脚本在 SQLCMD 模式下执行。
sqlcmd 实用程序允许您在命令提示符处、在 SQLCMD 模式下的查询编辑器中、在 Windows 脚本文件中或在 SQL Server 的操作系统 (Cmd.exe) 作业步骤中输入 Transact-SQL 语句、系统过程和脚本文件代理工作。此实用程序使用 ODBC 来执行 Transact-SQL 批处理。
解析度
请记住,您可以连接到数据库并从 Visual Studio 执行 sql。如果您在 SSMS 中打开相同的脚本,您会看到相同的语法错误。但是,在 SSMS 和 Visual Studio 中,您都可以“启用”SQLCMD 模式。
VS 2017
SSMS 17,SSMS 18
也可以看看
归档时间: |
|
查看次数: |
17349 次 |
最近记录: |