Vba Azure PostgreSQL的SSL连接字符串-语法正确
我有一个连接到PostgreSQL数据库的Microsoft Excel工作簿。我在本地主机上使用db已经有一段时间了 我现在已经将我的数据库移动到Azure PostgreSQL。我已成功地重新配置了查询/连接,以将数据拉入电子表格(通过在“ODBC数据源64位”中设置DSN),并将SSL设置为所需 该工作簿包含一些vba,用于将数据写回数据库。我得到一个错误: 运行时错误:'-2147467259(80004005)':致命:SSL连接已断开 必修的。请指定SSL选项并重试 错误抛出在Vba Azure PostgreSQL的SSL连接字符串-语法正确,vba,postgresql,azure,ssl,adodb,Vba,Postgresql,Azure,Ssl,Adodb,我有一个连接到PostgreSQL数据库的Microsoft Excel工作簿。我在本地主机上使用db已经有一段时间了 我现在已经将我的数据库移动到Azure PostgreSQL。我已成功地重新配置了查询/连接,以将数据拉入电子表格(通过在“ODBC数据源64位”中设置DSN),并将SSL设置为所需 该工作簿包含一些vba,用于将数据写回数据库。我得到一个错误: 运行时错误:'-2147467259(80004005)':致命:SSL连接已断开 必修的。请指定SSL选项并重试 错误抛出在dbC
dbConnPublic.Open sqlConnString
行上
代码的相关部分如下所示:
Sub WriteRowToDB()
' Define connectivity
Dim dbConnPublic As New ADODB.Connection
Dim sqlConnString As String
sqlConnString = OpenConnection()
dbConnPublic.Open sqlConnString
End Sub
Public Function OpenConnection() As String
'Define connection objects and terms
Dim sqlConnString As String
Dim myDriver As String: myDriver = "{PostgreSQL ANSI(x64)}"
Dim myServer As String: myServer = "djm-main-01.postgres.database.azure.com"
Dim myDatabase As String: myDatabase = "postgres"
Dim myUserName As String: myUserName = "djmmain01admin@djm-main-01"
Dim myPassword As String: myPassword = "[my password]" ' this replaced by the real password
' Open connection
sqlConnString = "Driver={PostgreSQL ANSI(x64)};" & _
"DSN=postgres;" & _
"Server=" & myServer & ";" & _
"Port=5432;" & _
"UID=" & myUserName & ";" & _
"PWD=" & myPassword & ";" & _
"Database=" & myDatabase & ";" & _
"ssl=true;READONLY=0;PROTOCOL=6.4;FAKEOIDINDEX=0;SHOWOIDCOLUMN=0;ROWVERSIONING=0;SHOWSYSTEMTABLES=1"
OpenConnection = sqlConnString
End Function
我尝试了ssl=true、ssl=required、sslmode=required的每一种组合,使用了两个参数和三个参数,一些带大写,一些小写,一些混合。找不到任何有意义的东西。还不确定此语法是Azure、PostgreSQL还是ADODB
请注意,我还可以使用DBeaver和命令行psql从Windows通过SSL成功连接到Azure db 各位观众好。所以我解决了这个问题 实际上非常简单,所需的参数是
ssmode=require
。它区分大小写。我一定是从排列中漏掉了这个。因此,假设语法由PostgreSQL ODBC驱动程序确定
这一资源有助于:
需要注意的其他问题:当密码包含在连接字符串中时,任何非字母数字都需要url编码,这是我没有想到的,因此我的系统生成的带有感叹号的密码必须转换为%21。我在HKEY\U CURRENT\U User\Software\ODBC\ODBC.INI\
不过,我现在已经更改了密码,使其不使用非字母数字
希望这是有用的