【问题标题】:SQL Job running a few select statements Incorrect syntax near '\'. [SQLSTATE 42000] (Error 102)SQL 作业运行一些选择语句 '\' 附近的语法不正确。 [SQLSTATE 42000](错误 102)
【发布时间】:2014-04-03 13:34:09
【问题描述】:

我有一个 SQL 作业,其中包含一些选择语句(4 个视图和 1 个文本)。

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'Database Email',
    @recipients = 'dbcheck@xxx.com',
    @subject = 'SQL Replication Deletion Check',
    @query = 'SELECT '\\server1\folder1\SQL\check.sql' AS [Script]
SELECT * FROM [repserv].[dbo].[1repdupecheck]
SELECT * FROM [repserv].[dbo].[2repdupecheck]
SELECT * FROM [repserv].[dbo].[3repdupecheck]
SELECT * FROM [repserv].[dbo].[4repdupecheck]',
    @attach_query_result_as_file = 1;

我目前在运行时遇到以下错误。

Message
Executed as user: SERVER1\sqlusr. Incorrect syntax near '\'. [SQLSTATE 42000] (Error 102).  The step failed.

现在我也尝试删除带有'\' 的行并且它有效,所以我只能假设一个括号或需要在选择文本中的反斜杠周围放置一些东西。

【问题讨论】:

    标签: sql syntax-error sql-job


    【解决方案1】:

    你需要转义反斜杠和引号

    'SELECT ''\\\\server1\\folder1\\SQL\\check.sql'' AS [Script]
    

    【讨论】:

    • 谢谢你!差不多明白了,不需要双反斜杠,虽然只是转义单引号!
    【解决方案2】:

    在下面的帮助下得到它,只需要添加双单引号(不需要在反斜杠上加倍)

    'SELECT ''\\server1\folder1\SQL\check.sql'' AS [Script]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 2018-06-26
      • 2018-07-03
      • 1970-01-01
      相关资源
      最近更新 更多