Sqlserver-jTDS驱动参数介绍

Sqlserver-jTDS驱动参数介绍

jTDS的URL格式为:

    jdbc:jtds:<服务器类型>:// <服务器> [:<端口>] [/ <数据库>] [; <属性> = <值> [; ...]]

其中是`'sqlserver'` 或之一`'sybase'`(其含义非常明显) 是数据库服务器正在侦听的端口(对于SQL Server,默认值为1433;对于Sybase,默认值为7100);以及``数据库名称-JDBC术语:catalog-(如果未指定,则使用用户的默认数据库。jTDS支持的属性集是:

  • appName(默认- "jTDS"

    应用名称。没有实际用途,由与该连接关联的企业管理器或Profiler显示。

  • autoCommit(默认- "true"

    自动提交。jTDS驱动程序默认情况下启用自动提交。使用此选项为新创建的连接禁用自动提交。

  • batchSize(默认值- 0对于SQL Server; 1000对于Sybase)

    控制批量发送到服务器的语句数。实际的批次分为大块,分别发送。这样做的原因是为了避免由于批处理空间不足而导致Sybase“挂起”。SQL Server似乎没有出现此问题,因此在这种情况下默认限制为0(无限制)。

  • bindAddress (默认值-由Java实现决定;需要Java 1.4或更高版本)

    指定要绑定到数据库的传出TCP / IP连接的本地IP地址。对于多宿主系统(具有多个外部IP地址的系统)很有用,在Java中,Java选择的默认IP地址将不会连接到数据库。使用命名管道连接到数据库时,当前无效(请参阅参考资料 namedPipe)。

  • bufferDir(默认- System.getProperty("java.io.tmpdir")

    控制数据缓冲到磁盘的目的地。 另请参阅bufferMaxMemorybufferMinPackets

  • bufferMaxMemory(默认- 1024

    控制所有连接的全局缓冲区内存限制(以千字节为单位)。当缓冲的服务器响应数据包数量达到此限制时,其他数据包将缓冲到磁盘;但是有一个例外:Statement在``强制执行此限制之前,每个缓冲区至少要缓冲到内存。这意味着通常可以超过该限制。 仅当在一段时间内发出请求时,服务器响应才缓冲到磁盘,Statement而另一个Statement 属于同一Connection 的请求仍未处理所有结果。通过设置useCursors属性可以在大多数情况下避免这些情况 ,但这也会影响性能。 另请参阅bufferMinPackets

  • bufferMinPackets(默认- 8

    控制每个语句缓冲到内存的最小数据包数。每个文件Statement将至少缓冲这么多的数据包,然后再强制使用临时文件(如果``已到达该文件) ,以确保即使在Statement缓存大量数据时仍具有良好的性能。 仅当在一段时间内发出请求时,服务器响应才缓冲到磁盘,Statement而另一个Statement 属于同一Connection 的请求仍未处理所有结果。通过设置useCursors属性可以在大多数情况下避免这些情况 ,但这也会影响性能。 另请参阅bufferMaxMemory

  • cacheMetaData(默认- false

    当与prepareSQL = 3一起使用时,将此属性设置为 true会导致驱动程序为SELECT语句缓存列元数据。重新使用返回具有许多列的较小结果集的语句时,缓存元数据将减少处理开销,但是如果准备好语句后数据库模式发生更改,则可能导致意外错误。小心使用。仅适用于SQL Server(Sybase没有prepareSQL = 3模式)。

  • charset (默认-服务器安装时使用的字符集)

    非常重要的设定,确定所述字节值来为字符映射CHAR/ VARCHAR/ TEXT值。适用于扩展集中的字符(代码128-255)。对于 NCHAR/ NVARCHAR/ NTEXT值没有任何作用,因为这些值是使用Unicode存储的。

  • domain

    指定要在其中进行身份验证的Windows域。如果存在并且提供了用户名和密码,则jTDS将使用Windows(NTLM)身份验证,而不是通常的SQL Server身份验证(即,提供的用户和密码是域用户和密码)。这允许非Windows客户端登录到仅配置为接受Windoes身份验证的服务器。 如果domain参数已存在,但未提供用户名和密码,jTDS使用其本机“单点登录”库并使用登录的Windows用户的凭据登录(要正常工作,显然必须在Windows上登录到域,并安装了SSO库-请参阅发行版中的README.SSO以了解如何执行此操作)。

  • instance

    要连接的命名实例。SQL Server可以在同一台计算机上运行多个所谓的“命名实例”(即,不同的服务器实例,在不同的TCP端口上运行)。使用Microsoft工具时,通过使用“ <主机名> \ <实例名称>”而不是通常的“ <主机名>”来选择这些实例之一。使用jTDS,您将必须将两者分开并使用实例名称作为属性。

  • lastUpdateCount(默认- true

    如果true仅最后一次更新计数将由返回 executeUpdate()。如果您要更新或插入具有触发器的表(例如复制的表),这很有用;没有办法在触发器返回的更新计数与实际更新计数之间进行区分,但是实际更新计数始终是最后一个触发触发器执行的最后一个计数。如果false 返回所有更新计数;用于getMoreResults()遍历它们。

  • lobBuffer(默认- 32768

    在缓存到磁盘之前要在内存中缓存的LOB数据量。该值以字节为单位表示Blob数据,以字符表示Clob

  • loginTimeout(默认- 0用于TCP / IP连接或20命名管道连接)

    超时之前等待成功连接的时间(以秒为单位)。 如果使用TCP / IP连接来连接到数据库,并且使用的是Java 1.4或更高版本,则该loginTimeout参数用于设置最初打开新套接字时的初始连接超时。零值(默认值)会导致连接无限期等待,例如,直到建立连接或发生错误。另请参阅 socketTimeout。 如果使用了命名管道连接(namedPipeis true)并且loginTimeout大于零,则值loginTimeout在尝试连接到服务器时收到“所有管道实例都忙”错误消息时,它用于重试周期的长度。如果loginTimeout为零(默认值),则在命名管道重试期间使用20秒的值。

  • macAddress(默认- "000000000000"

    网络接口卡的MAC地址。它由与该连接关联的企业管理器或Profiler显示,是解决与SQL Server许可证所允许的客户端数量有关的某些问题所必需的。无法从Java自动确定MAC地址(即,不使用本机代码),因此如果需要,您必须自行指定。

  • maxStatements(默认- 500

    准备每个连接应缓存的语句数。值0将禁用语句缓存。值Integer.MAX_VALUE2147483647)将启用快速缓存(使用更少的内存,并且没有与删除语句相关的开销);缓存将永远不会释放任何缓存的语句,因此尽管经验表明这对于大多数应用程序通常不是问题,但请谨慎使用。

  • namedPipe(默认- false

    设置为时true,将使用命名管道通信而不是TCP / IP套接字连接到数据库。当 os.name系统属性以“ windows”(不区分大小写)开头时RandomAccessFile ,通过打开路径的a ,可以通过Windows文件系统访问命名管道(本地管道和远程管道)。当SQL Server和客户端位于同一台计算机上时,由于消除了网络层,因此命名管道通常比TCP / IP套接字具有更好的性能。否则,将使用 JCIFS库。JCIFS提供了纯Java命名管道实现,并使用NTLM身份验证,因此该domain参数是必需的。 此功能支持instance参数(更改命名管道URL),但是它当前不支持/sql/query服务器以外的其他位置的命名管道。port如果设置,则忽略该 参数。

  • packetSize(默认- 4096对于TDS 7.0 / 8.0; 512对于TDS 4.2 / 5.0)

    网络数据包大小(512的倍数)。

  • password (需要)

    用于登录的密码。使用时getConnection(String url, String user, String password),不需要设置此属性,因为它是作为参数传递的,但是使用getConnection(String url, Properties info)或时,您必须对其进行设置 JtdsDataSource

  • prepareSQL(默认值- 3对于SQL Server, 1对于Sybase)

    此参数指定用于预准备语句的机制。

    描述
    0每次不做任何准备就将SQL发送到服务器,将文字插入SQL中(较慢)
    1为每个唯一的SQL语句和参数组合创建临时存储过程(更快)
    2使用sp_executesql(快速)
    3sp_prepare和sp_cursorprepare与sp_execute和sp_cursorexecute结合使用(速度更快,仅适用于SQL Server)
  • progName(默认- "jTDS"

    客户端库名称。没有实际用途,由与该连接关联的企业管理器或Profiler显示。

  • processId(默认- 123

    与连接关联的客户端进程ID。必须为整数值或字符串“ compute”,以使jTDS选择进程ID。

  • sendStringParametersAsUnicode(默认- true

    确定是否以Unicode或数据库的默认字符编码将字符串参数发送到SQL Server数据库。这会严重影响SQL Server 2000的性能,因为它不会自动转换类型(如7.0一样),这意味着如果索引列是Unicode且使用默认字符编码(或相反)提交字符串,则SQLServer将执行索引扫描而不是索引搜索。对于Sybase,请确定是否将无法在服务器字符集中编码的字符串作为unicode字符串发送。编码逻辑会降低性能,因此如果未使用unitext或univarchar数据类型或charset为utf-8,则将此选项设置为false。

  • socketTimeout(默认- 0

    超时之前等待服务器响应的时间(以秒为单位)。 小心使用!如果提供了非零值,则该值必须大于服务器回答任何查询所花费的最长时间。一旦超过超时值,网络或命名管道连接将关闭。此参数对于在池化环境中检测死网络连接可能很有用。另请参阅 loginTimeout。如果通过JCIFS使用命名管道,则无法完全禁用超时。而是应用约25天(2 ^ 31 ms)的超时。

  • socketKeepAlive(默认- false

    启用TCP / IP保持活动消息时为true

  • ssl(默认- off

    指定是否以及如何使用SSL进行安全通信。

    描述
    off未请求或未使用SSL;这是默认值
    request请求SSL;如果服务器不支持,则使用普通连接
    require请求SSL;如果服务器不支持,则抛出异常
    authenticaterequire服务器证书相同,但必须由受信任的CA签署
  • tcpNoDelay(默认- true

    true在套接字上启用TCP_NODELAY; false禁用它。

  • TDS(默认值- "8.0"对于SQL Server; "5.0"对于Sybase)

    要使用的TDS版本。TDS(表格数据流)是Microsoft SQL Server和Sybase用于与数据库客户端进行通信的协议。jTDS可以使用TDS 4.2、5.0、7.0和8.0。SQL Server 6.5和Sybase 10使用4.2版。Sybase11及更高版本使用5.0版。SQL Server 7.0使用7.0版。该协议也可用于SQL Server2000。SQLServer 2000和SQL Server 2005使用8.0版。 较新的数据库服务器版本通常可以理解较旧的协议版本。这意味着SQL Server 7.0可以与TDS 4.2一起使用,但是该协议的限制适用于所有服务器版本(例如,使用TDS 4.2时)VARCHARs限制为255个字符)。结论是,"4.2"连接到SQL Server 6.5或Sybase时必须将此属性设置为。"7.0" or "8.0"连接到任何版本的Sybase时,请勿将此值设置为 ),因为这些是SQL Server特定协议。此外,"5.0"在连接到任何版本的SQL Server时,请勿将此值设置为),因为这是Sybase特定的协议。 当前,jTDS自动从8.0降级到7.0(如果与SQL Server 7.0一起使用),从5.0降到4.2(对于Sybase 10),因此仅对于SQL Server 6.5指定此参数的值是必需的。

  • useCursors(默认- false

    指示jTDS将服务器端游标而不是直接选择(AKA Firehose游标)用于前向只读结果集(与其他类型的结果集一起使用服务器端或客户端游标)。 使用firehose游标发送SELECT查询,服务器将响应所有结果行。这是最快的方法,但是这意味着如果需要在处理所有行之前发出另一个请求,驱动程序必须缓存所有结果。因此,当Statement每个使用多个s时Connection,最好使用服务器端游标;这些将使驱动程序一次仅请求有限数量的行(可通过a的fetchSize属性 控制Statement)。这意味着额外的请求-响应周期,但减少了驱动程序的缓存。 在SQL Server中,将此属性设置为时,将创建 一个所谓 的仅快速前进游标true。使用Sybase,可以创建通常的只读只读游标。

  • useJCIFS(默认- false

    控制是否使用jCIFS 库代替Windows操作系统上具有命名管道连接的本地文件系统。(当操作系统不是Windows时,jCIFS库将始终与命名管道一起使用。)当通过命名管道连接到与客户端位于不同域中的服务器时很有用。另请参阅 namedPipe

  • useLOBs(默认- true

    控制默认情况下(使用时getObject())是否应将大类型(IMAGE和TEXT / NTEXT)映射到LOB或Java类型(Stringbyte[])。返回的默认JDBC类型常量也受此属性控制: Types.BLOB对于IMAGE和Types.CLOBTEXT / NTEXT,在时trueTypes.LONGVARBINARY 对于IMAGE和Types.LONGVARCHARTEXT / NTEXT,当时 false。 当直接打印出getObject()(例如,当使用JSTL或其他框架时)返回的值(Blob并且Clob不需要实现 )时,这很有用 toString()(两者都是因为它不是必需的,因为它很容易导致OutOfMemoryError在意外情况下(例如记录数据时)。默认设置 true的优点是可以通过该lobBuffer属性控制大对象在内存中缓存的数据量 ;设置false仍将在内部使用BlobClob实现,但在getObject()调用时将这些值具体化到内存中 ,可能导致内存问题。

  • useNTLMv2 (默认-假)

    设置为true使用Windows身份验证时发送LMv2 / NTLMv2响应

  • user (需要)

    用于登录的用户名。使用时getConnection(String url, String user, String password),不需要设置此属性,因为它是作为参数传递的,但是使用getConnection(String url, Properties info)或 时,您必须对其进行设置JtdsDataSource

  • wsid (默认值-客户端主机名)

    工作站ID。没有实际用途,由与该连接关联的企业管理器或Profiler显示。

  • xaEmulation(默认- true

    设置true为时,模拟XA分布式事务支持,设置为false使用实验性真正的分布式事务支持时。真正的分布式事务支持仅适用于SQL Server 2000,并且要求在目标服务器中安装外部存储过程(有关详细信息,请参阅分发中的README.XA文件)。

可以通过以下三种方式之一将属性传递给jTDS:在URL中,在Properties传递给对象getConnection() 或通过使用JtdsDataSourcesetter的对象中(如果通过DataSource而不是使用 来获得连接DriverManager)。因为当使用无URL JtdsDataSource有三个其他属性(与getter和setter方法)把那些在URL语法的一部分项目的地方:serverNameportNumberdatabaseName(其含义应该是很清楚的)。

原文地址

http://jtds.sourceforge.net/faq.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值