【问题标题】:Running a script inside a transaction T-SQL在事务 T-SQL 中运行脚本
【发布时间】:2017-05-30 18:43:04
【问题描述】:

是否可以在事务中运行脚本? 然后我可以编辑脚本的路径并以安全的方式运行它们。

:setvar ScriptPath "C:\Script1.sql"
BEGIN TRY
    BEGIN TRANSACTION
        :r $(ScriptPath)
    COMMIT TRANSACTION
    PRINT 'Successfull'
END TRY
BEGIN CATCH
    PRINT 'Error'
    ROLLBACK TRANSACTION
END CATCH

但是,当我尝试在事务中运行脚本时,我会立即收到以下错误: 'BEGIN' 附近的语法不正确。 “TRY”附近的语法不正确。 'CATCH' 附近的语法不正确。

【问题讨论】:

  • 哪个 SQL 版本?
  • 你从哪里跑? SSMS?

标签: sql tsql transactions migration


【解决方案1】:

可能是错误的 SQL 版本 - 你使用的是什么版本?

您的包含脚本内容可能有问题。

(另外,请确保启用了 SQLCMD 模式。)

以下作品(选1):

:setvar ScriptPath "C:\temp\Script1.sql"
BEGIN TRY
    BEGIN TRANSACTION
         :r $(ScriptPath)
    COMMIT TRANSACTION
    PRINT 'Successfull'
END TRY
BEGIN CATCH
    PRINT 'Error'
    ROLLBACK TRANSACTION
END CATCH

文件 C:\temp\Script1.sql 包含“SELECT 1”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    相关资源
    最近更新 更多