gpt4 book ai didi

sql-server-2008 - 在 SQL Server Management Studio 中使用 setvar 转义空格字符

转载 作者:行者123 更新时间:2023-12-04 22:16:20 27 4
gpt4 key购买 nike

首先,我不是 DBA 并且我没有任何 SQL Server 的(管理员)经验,所以请在回答时使用少音节的词...

我正在运行 SQL Server 2008 R2 并尝试编写一个概念验证脚本来设置非分区、双向、事务复制。我已经设法从 MS 站点调整脚本以使其正常工作,现在我正在尝试根据我们的需要对其进行自定义。这涉及将一堆值提取到变量中。

我已将 SSMS 设置为“SQLCMD 模式”,并且我的所有变量都可以解析,但一个除外。

:setvar ReplicationDirectory 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2\MSSQL\repldata';

这给了我错误:

A fatal scripting error occurred. Incorrect syntax was encountered while parsing :setvar



我已将问题缩小到变量值中是否存在空格。根据我一直在阅读的内容,这应该没有问题。我试过用双引号(普通类型和有角度的类型)替换单引号,但都给我同样的错误。

我在网上找不到任何告诉我应该如何转义空格字符的内容。我看过的所有文章都说,如果字符串在引号中,SSMS 只会将它们之间的任何内容解释为单个字符串 - 无论空格如何。

有没有人有任何想法?

我想我可以将变量的值更改为:
:setvar ReplicationDirectory 'C:\Progra~1\Micros~1\MSSQL10_50.SQL2\MSSQL\repldata';

但我宁愿解决“为什么我不能使用空格?”问题。

非常感谢。

汤姆

最佳答案

使用双引号,而不是单引号:

:setvar ReplicationDirectory "C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2\MSSQL\repldata"

select '$(ReplicationDirectory)' as test

或者
:setvar ReplicationDirectory "'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2\MSSQL\repldata'"

select $(ReplicationDirectory) as test

SQLCMD 模式变量实际上是命令行变量,而不是 T-SQL 变量(以 @ 符号开头),您必须相应地设置它们。

关于sql-server-2008 - 在 SQL Server Management Studio 中使用 setvar 转义空格字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4470517/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com