如何转义 RODBC 连接字符串密码中的特殊字符
Posted
技术标签:
【中文标题】如何转义 RODBC 连接字符串密码中的特殊字符【英文标题】:How to escape special characters in RODBC connection string password 【发布时间】:2020-06-30 06:35:17 【问题描述】:我有一个 SQL Server 数据库,我可以通过 MS Studio 连接到我的用户和这个密码:“testspecialcharacters_¤”,没有问题。我们正在使用 windows 身份验证连接到服务器。
但是我无法通过我的 R Shiny 应用程序连接到它。我无法给出确切的服务器、数据库和用户名,但这与我使用的代码非常接近:
library(RODBCext)
ch <- odbcDriverConnect("DSN=test;database=test_db;UID=test_user;PWD=testspecialcharacters_¤")
data <- sqlQuery(ch,"select * from test_db.general.test_tbl")
我收到以下错误:
[RODBC] ERROR: state 42000, code 18452, message [unixODBC][FreeTDS][SQL Server]Login failed. The login is from an untrusted domain and cannot be used with Windows authentication.
[RODBC] ERROR: state 08001, code 0, message [unixODBC][FreeTDS][SQL Server]Unable to connect to data source
ODBC connection failed
我必须提到,相同的代码适用于没有该特殊字符的密码。根据经验,我们发现“-”和“!”似乎工作。但是“@”和“¤”不起作用。我们没有尝试所有可能的特殊字符,只有这几个。
根据网上的其他帖子,我尝试了以下方法,但没有成功:
ch <- odbcDriverConnect("DSN=test;database=test_db;UID=test_user;PWD=testspecialcharacters_¤", DBMSencoding = "UTF-8")
ch <- odbcDriverConnect("DSN=test;database=test_db;UID=test_user;PWD=testspecialcharacters_¤", DBMSencoding = "UTF-8-BOM")
ch <- odbcDriverConnect("DSN=test;database=test_db;UID=test_user;PWD=testspecialcharacters_¤", DBMSencoding = "latin1")
ch <- odbcDriverConnect("DSN=test;database=test_db;UID=test_user;PWD=testspecialcharacters_¤")
ch <- odbcDriverConnect("DSN=test;database=test_db;UID=test_user;PWD='testspecialcharacters_¤'")
我正在使用带有 UTF-8 默认编码的 RStudio Pro。
有人知道如何转义密码字符串中使用的特殊字符吗?或者,如果需要其他方式连接到数据库。
【问题讨论】:
【参考方案1】:最好的方法是像这样使用基本的转义。但是你必须在你的机器上测试它,因为在你的机器和数据库之间设置正确的编码真的很难。
x <- "¤"
y <- "\u00A4"
identical(x, y) # true
还有表格链接 https://www.utf8-chartable.de/
【讨论】:
您好,谢谢您的建议,我刚刚尝试过,但这似乎也行不通。我已将连接字符串更改为 ch以上是关于如何转义 RODBC 连接字符串密码中的特殊字符的主要内容,如果未能解决你的问题,请参考以下文章