标签: jtds

SSL身份验证后,JDBC(JTDS)SQL Server连接已关闭

我使用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)

java sql-server ssl jtds

5
推荐指数
2
解决办法
1万
查看次数

如何使用java GSS + JAAS获得可再生的kerberos票

我使用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)

java kerberos jtds jaas jgss

5
推荐指数
1
解决办法
1934
查看次数

SQLException:仅带有PreparedStatement的无效参数索引1

我有一个带有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)

java sql-injection jtds prepared-statement sql-server-2012

5
推荐指数
1
解决办法
8692
查看次数

是否可以在sql server上使用jdbc获取查询计划?

我正在使用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)

java sql-server sql-server-2005 jtds jdbc

4
推荐指数
1
解决办法
1923
查看次数

JTDS和JBOSS JDBC连接池问题,有什么解决方案吗?也许自定义ValidConnectionChecker?

我面临一个奇怪的生产问题.环境如下:

  • JBOSS 4.0.2
  • SQL Server 2005
  • 驱动程序JTDS 1.2.5

以下的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.

问候

jboss jtds jdbc

4
推荐指数
1
解决办法
8532
查看次数

致命异常:主要java.lang.VerifyError:net.sourceforge.jtds.jdbc.TdsCore

在我的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)

java sql-server android jtds

4
推荐指数
1
解决办法
3859
查看次数

当服务器名称包含反斜杠 (localhost\TESTDATA) 时使用 JDBC

感谢您抽时间阅读。我完全被什么可能是简单的事情难住了。我正在尝试连接到我的 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)

谢谢

java sql-server jtds jdbc

4
推荐指数
1
解决办法
9159
查看次数

使用JTDS在Spring Boot中配置HikariCP

我想在我现有的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)

java spring jtds spring-boot hikaricp

4
推荐指数
2
解决办法
6587
查看次数

如何为 SQL Server Windows 身份验证配置 Squirrel SQL

我试图将 Squirrel 连接到基于 Windows 身份验证的 MS SQL Server 数据库,而不是常规的用户名和密码。但是 Windows 身份验证似乎有点棘手。如果有人为它进行逐步配置,那就太好了。

sql-server jtds jdbc squirrel-sql windows-authentication

4
推荐指数
1
解决办法
4777
查看次数

在 Python 中创建 jTDS 连接字符串

我正在尝试使用 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)

connection-string jtds python-3.x

3
推荐指数
1
解决办法
5842
查看次数