GCP中AppScript通过JDBC连接同账号MS SQL失败求助
针对你遇到的连接失败问题,结合你的场景(本地SSMS可连、MySQL实例正常),可以按以下步骤排查:
修正连接字符串的格式问题
你的连接字符串中password参数前有多余空格:; password=mypassword,这会导致JDBC无法正确识别参数,必须去掉空格,改为:jdbc:sqlserver://sqlserverip;databaseName=testdb;user=tester;password=mypassword另外,若你的SQL Server实例非默认端口(1433),需显式添加端口号,比如:
jdbc:sqlserver://sqlserverip:1434;...启用Google服务访问权限
虽然你已将本地IP加入白名单,但AppScript属于Google云端服务,其出口IP不在你的白名单范围内。需在GCP Cloud SQL实例的连接设置中,开启允许所有Google Cloud服务访问此实例选项,这样AppScript才能正常发起连接。添加加密连接参数
GCP Cloud SQL for SQL Server默认要求加密连接,需在连接字符串中补充加密相关参数,尝试两种配置:- 信任服务器证书(快速测试用):
jdbc:sqlserver://sqlserverip;databaseName=testdb;user=tester;password=mypassword;encrypt=true;trustServerCertificate=true - 严格证书验证(生产环境推荐):
jdbc:sqlserver://sqlserverip;databaseName=testdb;user=tester;password=mypassword;encrypt=true;trustServerCertificate=false;hostNameInCertificate=sqlserverip
- 信任服务器证书(快速测试用):
确认账号身份验证类型
确保tester账号使用的是SQL Server身份验证,而非Windows身份验证——AppScript无法支持Windows域账号的身份验证方式,即使SSMS能通过Windows auth连接,AppScript也会失败。检查JDBC驱动兼容性
AppScript内置的JDBC驱动对SQL Server 2017 Web Edition是兼容的,但可尝试显式指定驱动类(部分场景下需要),在连接时添加参数:;driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
内容的提问来源于stack exchange,提问作者KCL

