sql - 驱动程序无法使用安全套接字层 (SSL) 加密建立到 SQL Server 的安全连接
问题描述
我正在尝试通过我的 groovy 代码连接到我的公司 Microsoft sql。使用此代码:
String conn= "jdbc:sqlserver://;servername="+url+";databaseName=central;user=***qa***;password=***mypassword***;"
def sqlConnection = Sql.newInstance(conn,username,password,"com.microsoft.sqlserver.jdbc.SQLServerDriver")
这导致错误:
mgroovy.lang.MissingPropertyException:没有这样的属性:类的连接:sqlKeyWords.checking[0;39m [31m at sqlKeyWords.checking.connectDB(checking.groovy:60)[0;39m [31m at sqlKeyWords.checking.invokeMethod(checking .groovy)[0;39m [31m at com.kms.katalon.core.main.CustomKeywordDelegatingMetaClass.invokeStaticMethod(CustomKeywordDelegatingMetaClass.java:49)[0;39m [31m at CreateOrg.run(CreateOrg:47)[0;39m [ 31m 在 com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)[0;39m [31m 在 com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)[ 0;39m [31m 在 com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:331)[0;39m [31m 在 com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java :322)[0;39m [31m 在 com.kms.katalon.core.main。TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:301)[0;39m [31m 在 com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:293)[0;39m [31m 在 com.kms.katalon。 core.main.TestCaseExecutor.execute(TestCaseExecutor.java:227)[0;39m [31m 在 com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114)[0;39m [31m 在 com. kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:105)[0;39m [31m at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(未知来源)[0;39m [ 31m 在 TempTestCase1555589132729.run(TempTestCase1555589132729.groovy:21)执行(TestCaseExecutor.java:227)[0;39m [31m 在 com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114)[0;39m [31m 在 com.kms.katalon.core。 main.TestCaseMain.runTestCase(TestCaseMain.java:105)[0;39m [31m at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(未知来源)[0;39m [31m at TempTestCase1555589132729.run( TempTestCase1555589132729.groovy:21)执行(TestCaseExecutor.java:227)[0;39m [31m 在 com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114)[0;39m [31m 在 com.kms.katalon.core。 main.TestCaseMain.runTestCase(TestCaseMain.java:105)[0;39m [31m at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(未知来源)[0;39m [31m at TempTestCase1555589132729.run( TempTestCase1555589132729.groovy:21)
这个错误不是那么描述性,因此这是我在调试中发现的一个错误:
驱动程序无法使用安全套接字层 (SSL) 加密建立与 SQL Server 的安全连接
后来我从http://docs.groovy-lang.org/latest/html/api/groovy/sql/Sql.html尝试了这个:
def db = [url:'jdbc:sqlserver:'+url+':central', user:username, password:password, driver:'com.microsoft.sqlserver.jdbc.SQLServerDriver']
def sql = Sql.newInstance(db.url, db.user, db.password, db.driver)
这导致:
找不到适合 jdbc:sqlserver:aaa-sql-qa.database.windows.bbb:dbName 的驱动程序
我看到了很多答案,其中大多数人说要使用服务器的防火墙,但我可以通过我的 python 代码或通过 SSMS 连接到数据库。另外,我没有能力玩防火墙。我看到在这个答案中使用了 jTDS,但我无法继续处理其他问题(当然它也没有连接)
解决方案
http://docs.groovy-lang.org/latest/html/api/groovy/sql/Sql.html
conn 变量是一个简单的字符串,因此实际上在初始化 newInstance 时您并没有发送 url。相反,您发送整个字符串。尝试只发送网址。
推荐阅读
- android - 在 Java 类中解析 DataSnapshot 无法正常工作
- swift - 通过 typealias swift 关闭不起作用
- json - 如何在 Swift 中对来自多个 API/源的数据使用单个模型结构?
- python - 使用 `wb.save` 会导致“UnboundLocalError: local variable 'rel' referenced before assignment”
- angular - Angular中Highcharts工具提示的单元测试
- php - 尝试更新 woocommerce 订单状态时,Wordpress 冻结
- python - python相当于matlab mvnrnd?
- php - MongoDB 驱动程序
- spring-boot - 在使用 OAuth2 保护应用程序的同时,我想公开一些可供任何人访问的 URL
- java - 如何在特定时区(“欧洲/巴黎”)中获取今天的 startDate 和 endDate 的 UTC 瞬间