Tom*_*Tom 4 sqlcmd sql-server-2008
首先,我不是DBA,我没有任何(管理员)SQL Server经验,所以请在回答时使用几个音节很少的单词...
我正在运行SQL Server 2008 R2并尝试编写一个概念验证脚本,该脚本设置非分区,双向,事务复制.我已经设法从MS站点调整脚本工作,现在我正在尝试根据我们的需求进行自定义.这涉及将一堆值拉出到变量中.
我已经将SSMS设置为"SQLCMD模式",并且我的所有变量都可以解析,除了一个.
:setvar ReplicationDirectory 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2\MSSQL\repldata';
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
发生了致命的脚本错误.解析时遇到错误的语法:setvar
我已将问题缩小到变量值中存在空格.根据我一直在阅读的内容,这应该没有问题.我试过用双打替换单引号(正常种类和角度类型)但都给了我同样的错误.
我在网上找不到任何告诉我如何逃避空间角色的东西.我见过的所有文章都说如果字符串在引号中,SSMS只会将它们之间的任何内容解释为单个字符串 - 无论空格如何.
有没有人有任何想法?
我想我可以将变量的值更改为:
:setvar ReplicationDirectory 'C:\Progra~1\Micros~1\MSSQL10_50.SQL2\MSSQL\repldata';
Run Code Online (Sandbox Code Playgroud)
但我宁愿解决"为什么我不能使用空格?" 而不是问题.
非常感谢.
汤姆
Ed *_*per 11
使用双引号,而不是单引号:
:setvar ReplicationDirectory "C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2\MSSQL\repldata"
select '$(ReplicationDirectory)' as test
Run Code Online (Sandbox Code Playgroud)
要么
:setvar ReplicationDirectory "'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2\MSSQL\repldata'"
select $(ReplicationDirectory) as test
Run Code Online (Sandbox Code Playgroud)
SQLCMD模式变量实际上是命令行变量,而不是T-SQL变量(以@符号开头),您必须相应地设置它们.
| 归档时间: |
|
| 查看次数: |
7674 次 |
| 最近记录: |