Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Azure PostgreSQL的SSL连接字符串-语法正确_Vba_Postgresql_Azure_Ssl_Adodb - Fatal编程技术网

Vba Azure PostgreSQL的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

我有一个连接到PostgreSQL数据库的Microsoft Excel工作簿。我在本地主机上使用db已经有一段时间了

我现在已经将我的数据库移动到Azure PostgreSQL。我已成功地重新配置了查询/连接,以将数据拉入电子表格(通过在“ODBC数据源64位”中设置DSN),并将SSL设置为所需

该工作簿包含一些vba,用于将数据写回数据库。我得到一个错误:

运行时错误:'-2147467259(80004005)':致命:SSL连接已断开 必修的。请指定SSL选项并重试

错误抛出在
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\

不过,我现在已经更改了密码,使其不使用非字母数字

希望这是有用的