我使用jTDS JDBC SQLServer库连接到SQL Server 2008数据库.它总是在没有SSL的情况下工作,但是一旦我们启用它,我就无法连接它.我已经跟踪了Java,如下所示并检查了数据库端的日志,并且身份验证正常工作,但在尝试执行查询时立即断开连接.谁见过这个问题?
main, received EOFException: ignored
main, called closeInternal(false)
main, SEND TLSv1 ALERT: warning, description = close_notify
Padded plaintext before ENCRYPTION: len = 32
0000: 01 00 DF 4A F1 23 CF E7 6B 62 3D 7D 4D CD C9 AD ...J.#..kb=.M...
0010: 26 7B 16 59 84 9A 09 09 09 09 09 09 09 09 09 09 &..Y............
main, WRITE: TLSv1 Alert, length = 32
[Raw write]: length = 37
0000: 15 03 01 00 …Run Code Online (Sandbox Code Playgroud) 我使用jTDS连接到SQLServer.在内部,jTDS使用GSS获取kerberos的服务票证并建立安全的上下文.由于我的应用程序是长期存在的,并且我的连接一直保持活动,所以我需要将kerberos的服务票据更新,以便允许SQL服务器自行续订(kdc策略设置为在12小时后使所有票证到期) ).
jTDS获取kerberos令牌的做法(或多或少)如下:
GSSManager manager = GSSManager.getInstance();
// Oids for Kerberos5
Oid mech = new Oid("1.2.840.113554.1.2.2");
Oid nameType = new Oid("1.2.840.113554.1.2.2.1");
// Canonicalize hostname to create SPN like MIT Kerberos does
GSSName serverName = manager.createName("MSSQLSvc/" + host + ":" + port, nameType);
GSSContext gssContext = manager.createContext(serverName, mech, null, GSSContext.DEFAULT_LIFETIME);
gssContext.requestMutualAuth(false);
gssContext.requestCredDeleg(true);
byte[] ticket = gssContext.initSecContext(new byte[0], 0, 0);
Run Code Online (Sandbox Code Playgroud)
我怀疑的是我获得的机票不可更新.我正在通过执行以下操作来检查:
ExtendedGSSContext extendedContext = (ExtendedGSSContext) gssContext;
boolean[] flags = (boolean[]) extendedContext.inquireSecContext(InquireType.KRB5_GET_TKT_FLAGS);
System.out.println("Renewable = " + flags[8]);
Run Code Online (Sandbox Code Playgroud)
在我们的特定配置中,GSS从JAAS登录模块获取kerberos TGT.我们将以下变量设置为false,-Djavax.security.auth.useSubjectCredsOnly=false并在login.cfg文件中配置以下登录模块:
com.sun.security.jgss.krb5.initiate { …Run Code Online (Sandbox Code Playgroud) 我有一个带有Tomcat8 + SQL Server2012 JDBC驱动程序类型4的webapp(JSP / Servlet):JTDS旧版本1.2.5(http://jtds.sourceforge.net/)
我更改了这种查询,添加了Prepared Statement(服务器分页)
Sting DDXsql = "SELECT '?' *, ( DDX_RECORD_COUNT / '?' + 1 ) AS DDX_PAGE_COUNT
FROM
( SELECT '?' *
FROM ( SELECT '?' *,
(SELECT COUNT(*) " + "FROM "
+ session.getAttribute("DatabaseName") + ".G1_grid "
+ sqlFrom
+ sqlWhere + " "
+ " ) AS DDX_RECORD_COUNT "
+ "FROM " + session.getAttribute("DatabaseName") + ".G1_grid "
+ sqlFrom
+ sqlWhere + " "
+ " ORDER BY '?' …Run Code Online (Sandbox Code Playgroud) 我正在使用JTDS驱动程序,我想确保我的java客户端收到与在Mgmt studio中执行SQL时相同的查询计划,有没有办法获得查询计划(理想情况下是xml格式)?
基本上,我想要相同的格式输出
set showplan_xml on
Run Code Online (Sandbox Code Playgroud)
在管理工作室.有任何想法吗?
一些用于获取session_id计划的代码
SELECT usecounts, cacheobjtype,
objtype, [text], query_plan
FROM sys.dm_exec_requests req, sys.dm_exec_cached_plans P
CROSS APPLY
sys.dm_exec_sql_text(plan_handle)
CROSS APPLY
sys.dm_exec_query_plan(plan_handle)
WHERE cacheobjtype = 'Compiled Plan'
AND [text] NOT LIKE '%sys.dm_%'
--and text like '%sp%reassign%'
and p.plan_handle = req.plan_handle
and req.session_id = 70 /** <-- your sesssion_id here **/
Run Code Online (Sandbox Code Playgroud) 我面临一个奇怪的生产问题.环境如下:
以下的szenario会不时发生.
SQL命令无法执行
java.sql.SQLException: I/O Error: Read timed out
Run Code Online (Sandbox Code Playgroud)
(我可以忍受,如果它只是每天发生两次左右)
但是从那一刻起,连接似乎被浪费了,没有游泳池认出它,正如我不断收到的那样
java.sql.SQLException: Invalid state, the Connection object is closed.
Run Code Online (Sandbox Code Playgroud)
从那一刻开始.唯一有帮助的是重启JBOSS.尽管我有这个事实,但仍然会发生这种情况
<check-valid-connection-sql>select getdate()</check-valid-connection-sql>
Run Code Online (Sandbox Code Playgroud)
在我的数据源定义中设置.
我想知道我是否可以使用自定义ValidConnectionChecker,它可以重建连接本身,或者显式抛出异常来解决这个问题.也许有人有其他建议.
这是我完整的DS定义.
<local-tx-datasource>
<jndi-name>MyDS</jndi-name>
<connection-url>jdbc:jtds:sqlserver://192.168.35.235:1433/MyDb;user=user1;password=pwd;appName=MyApp;loginTimeout=15;socketTimeout=120</connection-url>
<driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>
<user-name>user1</user-name>
<password>pwd</password>
<min-pool-size>10</min-pool-size>
<max-pool-size>25</max-pool-size>
<blocking-timeout-millis>60000</blocking-timeout-millis>
<idle-timeout-minutes>1</idle-timeout-minutes>
<check-valid-connection-sql>select getdate()</check-valid-connection-sql>
</local-tx-datasource>
Run Code Online (Sandbox Code Playgroud)
任何帮助appriciated.
问候
在我的Android项目中,我使用jtds.jdbc连接到SQL Server数据库.在尝试连接时,我写了错误的连接字符串,它引发了一个错误说:" Network error IOException: Connection timed out".
Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
Connection DbConn = DriverManager.getConnection(192.168.xx.xx:1085/SomeDatabase;integratedSecurity=true;user=xxx;password=xxx;instanceName=SomeInstance);
Statement stmt = DbConn.createStatement();
ResultSet reset = stmt.executeQuery(" select * from SomeTable");
Log.i("RESULTS", reset.getString(1));
DbConn.close();
Run Code Online (Sandbox Code Playgroud)
这证明了JTDS包含在我的项目中并且正在工作.但是当我写出正确的连接字符串时,我收到了以下错误:
11-28 08:09:31.929: I/dalvikvm(13041): Could not find method org.ietf.jgss.GSSManager.getInstance, referenced from method net.sourceforge.jtds.jdbc.TdsCore.createGssToken
11-28 08:09:31.929: W/dalvikvm(13041): VFY: unable to resolve static method 7980: Lorg/ietf/jgss/GSSManager;.getInstance ()Lorg/ietf/jgss/GSSManager;
11-28 08:09:31.929: D/dalvikvm(13041): VFY: replacing opcode 0x71 at 0x0001
11-28 08:09:31.929: D/dalvikvm(13041): VFY: dead code 0x0004-0090 in Lnet/sourceforge/jtds/jdbc/TdsCore;.createGssToken ()[B
11-28 08:09:31.949: I/dalvikvm(13041): Could not …Run Code Online (Sandbox Code Playgroud) 感谢您抽时间阅读。我完全被什么可能是简单的事情难住了。我正在尝试连接到我的 SQL 数据库,以下内容往往有效:
String url = "jdbc:jtds:sqlserver://10.0.100.200;DatabaseName=master;user=sa;password=";
Run Code Online (Sandbox Code Playgroud)
但是,当我的名字包含反斜杠时,例如“localhost\TESTDATA 我似乎无法让它工作,我得到
“java.sql.SQLException:未知的服务器主机名'localhost\TESTDATA'。”
当我使用以下内容时:
String url = "jdbc:jtds:sqlserver://localhost\\TESTDATA;DatabaseName=master;user=sa;password=";
Run Code Online (Sandbox Code Playgroud)
谢谢
我想在我现有的Web应用程序中添加一个连接池,它是使用Spring Boot 1.5.1创建的.
数据源配置在application.properties中进行,如下所示:
spring.datasource.url=jdbc:jtds:sqlserver://localhost:1433;databaseName=MyDatabase;instance=SQLServer2014;
spring.datasource.username=myuser
spring.datasource.password=passwd
spring.datasource.driver-class-name=net.sourceforge.jtds.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
Run Code Online (Sandbox Code Playgroud)
我不需要进行任何进一步的配置,这就足够了.
虽然参数显示在Spring 官方文档中,但在Spring Boot 文档中也没有明确说明.
所以,我一直在那里寻找解决方案(这一个,这也是 ......).
我做了几次试验,但每次运行应用程序时,都会抛出有关HikariCP的例外情况.
添加时spring.datasource.type=com.zaxxer.hikari.HikariDataSource,抛出以下异常:
2017-02-15 12:12:23.955 WARN 14844 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is java.lang.AbstractMethodError
2017-02-15 12:12:23.964 INFO 14844 --- [ main] utoConfigurationReportLoggingInitializer :
Error starting ApplicationContext. To display …Run Code Online (Sandbox Code Playgroud) 我试图将 Squirrel 连接到基于 Windows 身份验证的 MS SQL Server 数据库,而不是常规的用户名和密码。但是 Windows 身份验证似乎有点棘手。如果有人为它进行逐步配置,那就太好了。
我正在尝试使用 Python 建立 jTDS 连接。谁能帮我完成这个任务吗?
在 SQL Server 中,我通常使用以下连接字符串进行连接:
jdbc:jtds:sqlserver://DBServer:port/DBInstance;useNTLMv2=true;domain=Domain
Run Code Online (Sandbox Code Playgroud)
我正在尝试在 Python 中执行以下操作:
import pyodbc
conn = pyodbc.connect('Driver={SQL Server};'
'Server=DBName,port;'
'Database=database;'
'Truster_Connection=yes;'
'uid=user;'
'pwd=password;'
)
cursor = conn.cursor()
cursor.execute('SELECT * from Table')
for row in cursor:
print(row)
Run Code Online (Sandbox Code Playgroud)
错误:
pyodbc.InterfaceError: ('28000', "[28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'USER'. (18456) (SQLDriverConnect); [28000] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute (0); [28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'USER'. (18456); [28000] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute …Run Code Online (Sandbox Code Playgroud) jtds ×10
java ×7
sql-server ×5
jdbc ×4
android ×1
hikaricp ×1
jaas ×1
jboss ×1
jgss ×1
kerberos ×1
python-3.x ×1
spring ×1
spring-boot ×1
squirrel-sql ×1
ssl ×1