首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL代理作业步骤中的转义字符问题

SQL代理作业步骤中的转义字符问题
EN

Stack Overflow用户
提问于 2016-08-18 14:48:37
回答 1查看 789关注 0票数 0

在代理作业步骤中尝试使用sp_msforeachdb无文档化过程时,我遇到了问题。下面是创建作业步骤的脚本:

代码语言:javascript
运行
复制
EXEC sp_add_jobstep
    @job_name = N'Weekly Blob Backup',
    @step_name = N'Run Backup',
    @subsystem = N'TSQL',
    @command = N'EXEC sp_msforeachdb '' BACKUP DATABASE [?] TO URL = ''''http://urlgoeshere.blob.core.windows.net/subfolder/SIMSPROCESSOR1_'''' + ''''?'''' + ''''_'''' + CONVERT(VARCHAR(8), CAST(GETDATE() AS DATE), 112) + ''''.bak'''' WITH COMPRESSION, CREDENTIAL = ''''SQLBlobStorageCredential''''''',
    @retry_attempts = 0,
    @retry_interval = 0

在执行时,我得到以下内容:

“+”附近的语法不正确。SQLSTATE 42000不正确的语法靠近关键字'with‘。如果此语句是公共表表达式、xmlnamespaces子句或更改跟踪上下文子句,则必须用分号终止前面的语句。

我成功地重写了这个文件来备份一个数据库。显然,字符转义有些不正确,但是当我将'Exec sp_msforeachdb‘语句放入PRINT()并执行它时,一切看起来都是正确的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-18 17:07:45

原来备份数据库不喜欢在TO URL子句中连接字符串。这样做是有效的:

代码语言:javascript
运行
复制
EXEC sp_add_jobstep
    @job_name = N'Weekly Blob Backup',
    @step_name = N'Run Backup',
    @subsystem = N'TSQL',
    @command = N'EXEC sp_msforeachdb ''DECLARE @url NVARCHAR(500) = N''''http://urlgoeshere.blob.core.windows.net/simsstorage/'''' + SUBSTRING(@@SERVERNAME, CHARINDEX(''''\'''', @@SERVERNAME, 1) +1, 100) + ''''_'''' + N''''?'''' + N''''_'''' + CONVERT(NVARCHAR(8), CAST(GETDATE() AS DATE), 112) + N''''.bak'''' BACKUP DATABASE [?] TO URL = @url WITH COMPRESSION, CREDENTIAL = ''''SQLBlobStorageCredential''''''',
    @retry_attempts = 0,
    @retry_interval = 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39021287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档