當前位置:首頁 > 資訊 > info6 > 正文

SQLServer JTDS 連接串格式

發表于: 2017-02-22   作者:chen_fly2011   來源:轉載   瀏覽:
摘要: jTDS連接字符串格式(jTDSURLFormat)jTDS連接字符串格式(URLFormat):jdbc:jtds:://[:][/][;=[;…]]其中,取值可以是’sqlserver’或’sybase’(各自的意義相當明顯),為數據庫服務監聽端口(缺省情況下SQLServer為1433,Sybase為7100)*;為數據庫名–JDBC術語:編目(catalog)–(如果未指明數據庫,將會使用
jTDS連接字符串格式(jTDS URL Format)

jTDS連接字符串格式(URL Format):
jdbc:jtds:<server_type>://<server>[:<port>] [/<database>] [;<property>=<value>[;…] ]

其中,<server_type>取值可以是’sqlserver’或’sybase’(各自的意義相當明顯),<port>為數據庫服務監聽端口(缺省情況下SQL Server為1433,Sybase為7100)*;<database>為數據庫名–JDBC術語:編目(catalog)–(如果未指明數據庫,將會使用用戶的缺省數據庫)。
*新版本Sybase使用默認端口值似乎已改成了5000

jTDS支持的屬性集合:

appName(缺省為’jTDS’) : 應用名稱。無實際用途,此名稱將會被Enterprise Manager或Profiler顯示在連接信息中。

batchSize(SQL Server缺省值為0;Sybase缺省值為1000) : 控制SQL批處理中SQL語句的數量。若用戶批處理中語句數量多于此值,將會被分割為小塊并單獨發送。這么作的原因是避免Sybase因批處理語句過多引起空間耗盡而造成的進程掛起。SQL Server并不存在這樣的問題,因此缺省值為0(無限制)。

bindAddress(缺省值-由Java實現決定;需要Java 1.4或更高版本) : 為連接到數據庫的TCP/IP鏈接綁定本地IP地址。對于多宿主系統(multi-homed systems, 擁有多個外部IP地址的系統),Java選擇的缺省IP地址也許無法連接到指定數據庫,這種情況下就需要指定使用哪一個本地址。當前,此屬性對采用命名管道連接數據庫的方式無影響(見namedPipe)。jTDS-1.2起支持此屬性。

bufferDir(缺省值-System.getProperty(“java.io.tmpdir”) ) : 控制數據在磁盤上的緩存位置。參見bufferMaxMemory和bufferMinPackets。

bufferMaxMemory(缺省值-1024) : 控制所有連接的全局緩存內存上限(單位為KB)。當緩存的服務器響應包達到指定上限,其他包將會被緩存到磁盤;例外:應用此上限前,每一條SQL語句所對應的響應結果在內存中都必須至少緩存<bufferMinPackets>個包;。這意味著,bufferMaxMemory所指定的上限可以并且通常都會被突破。
僅當一個連接中另一條SQL語句的返回結果未能被及時處理情況下,同一連接中某條SQL語句的服務器響應包才會被緩存至磁盤。一般地,可以通過設置useCursors屬性來避免以上情況,但同時會帶來對性能的影響。
參見bufferMinPackets。

bufferMinPackets(缺省值-8) : 控制每條SQL語句響應包在內存中緩存數量的下限。每一條SQL語句都將至少在內存中緩存此數值指定數量的包,即使<bufferMaxMemory>指定的上限已達到。這樣作的目的是為了獲得更好的性能,即使某條SQL語句的響應數據量非常大。
參見bufferMaxMemory。

cacheMetaData(缺省值-false) : 若使用了preSQL=3,設置此值為true將會使jTDS驅動緩存為SELECT語句緩存列元數據。在重復使用某些可能會因數據庫架構(schema)更改而引起異常的、返回記錄雖少但包含多列的SQL語句時,緩存元數據可以有效減少系統開銷。謹慎使用。屬性僅可應用于SQL Server(對于Sybase,不存在preSQL=3的模式)。

charset(缺省值-數據庫所安裝服務器的字符集) : 重要設置,決定了字符值到CHAR/VARCHAR/TEXT值的映射。應用于擴展字符集(編碼值128-255)。對使用Unicode存儲的NCHAR/NVARCHAR/NTEXT等值并無影響。

domain : 指定認證的Windows域。如果此屬性值存在并提供了用戶名和密碼,jTDS使用Windows(NTLM)認證方式取代SQL Server認證方式(即,所提供的用戶名和密碼為域用戶名和密碼)。此屬性允許那些非Windows客戶端提供了登錄那些配置為僅接受Windows認證方式數據庫。如果指定了域屬性但并未提供域用戶名和密碼,jTDS將使用本機的單點登錄庫(Single-Sign-On library)并以Windows登錄用戶的憑證登錄數據庫(需要客戶端運行在Windows之上,登錄了域,并安裝了SSO庫--查閱發行包中README.SSO獲知如何作到)。

instance : 欲連接的命名實例。SQL Server可以在同一臺機器上運行多個命名實例(named instance)(即,不同的服務實例,運行在不同的TCP端口之上)。使用Microsoft工具,可以用”<host_name>=&lt;instance_name>”的方式而不是”<host_name>”來選擇不同的實例。使用jTDS,必須將主機名和實例名分別指定,實例名為一個單獨的屬性。

lastUpdateCount(缺省值-true) : 僅當executeUpdate()返回最后更新數量時有效。對帶有觸發器(Triggers)的表(例如鏡像表,replicated table)進行更新或插入操作時,此屬性相當有用;想區分由觸發器返回的更新數量和實際更新數量是不可能的,但通常觸發器首先被執行而實際更新數量則在后面。如果lastUpdateCount為false,所有更新數量都將被返回;使用getMoreResule()來依次獲取。

lobBuffer(缺省值-32768) : LOB數據在被緩存到磁盤前在內存中的緩存數量。對Blob數據單位為字節(Bytes),對Clob數據單位為字符(Chars)。

loginTimeout(缺省值-TCP/IP連接缺省為0,命名管道連接缺省為20) : 為連接設置等待超時時長(單位為秒)。如果使用了Java 1.4或更新版本,TCP/IP連接方式下,loginTimeout參數用以設置打開新socket的連接初始化超時。0(缺省值)表示無限等待直至連接建立或有錯誤發生。參見socketTimeout。
如果使用命名管道連接方式并且loginTimeout值大于零,當嘗試連接到服務器時收到”所有管道實例忙(All pipe instance are busy)”錯誤時,loginTimeout值被用作重新連接周期的長度。如果loginTimeout為0(缺省值),命名管道重連周期將會為20秒。

macAddress(缺省值-”000000000000”) : 網卡MAC地址。會被Enterprise Manager或Profiler顯示在連接信息中,此屬性也會被用來解決SQL Server許可所允許客戶端數量的問題。Java不能自動檢測MAC地址(即不使用native代碼情況下),因此如果需要,必須手工指定。

maxStatements(缺省值-500) : 每一條連接應緩存的預分析SQL語句數量。取值為0將會禁止語句緩存。取值為Interger.MAX_VALUE(2147483647)將會允許快速緩存(使用更少的內存,并且對移除語句不會增加額外開銷);任何被緩存的語句都不會被釋放,因此,盡管這樣作通常情況下不會給大多數應用帶來麻煩,還是應謹慎使用此值。

namedPipe(缺省值-false) : 若設為true,連接數據庫時將會使用命名管道方式取代TCP/IP方式。當os.name屬性值以”windows”(大小寫不區分)開始,命名管道(本地端和遠端)將會以打開一個路徑指定RandomAccessFile的Windows文件系統方式進行訪問。當SQL Server和客戶端位于同一臺機器時,命名管道方式由于省略了TCP/IP套接字方式中的網絡層,因此通常可以獲得更高的效率。如os.name不是以”windows”開始,將會使用JCIFS。JCIFS提供了純Java的命名管道實現并使用了NTLM認證,因此需要domain參數。
此功能支持instance參數(更改命名管道URL),但當前并不支持位于服務器/sql/query以外的命名管道。如設置了namedPipe屬性,port參數將會被忽略。

packetSize(缺省值-TDS 7.0/8.0為4096;TDS 4.2/5.0為512) : 網絡包大小(512的整倍數)。

password(必需) : 登錄使用的密碼。如使用getConnection(String url, String user, String password)方法,密碼以參數形入輸入,因此無需在url中設置;如使用getConnection(String url, Propertys info)或JtdsDataSource,則必須在url中設定此屬性。

prepareSQL(缺省值-SQL Server為3,Sybase為1) : 參數指定預準備語句機制。


值 描述
0 SQL語句直接發送至服務器,常量(literals)被插入到SQL語句中(慢)
1 為每條唯一的SQL語句生成臨時存儲過程,并進行參數合并(快)
2 使用sp_executesql(快)
3 sp_prepare和sp_cursorprepare結合sp_execute和sp_cursorexecute使用(快速,僅適用于SQL Server)

progName(缺省值-”jTDS”) : 客戶端庫名稱。無實際意義,Enterprise Manager或Profiler將會顯示在所屬連接信息中。

processId(缺省值-123) : 與連接相關的客戶端進程ID。必須為整數數值,如設定為字符串”computer”,jTDS將會選擇進程ID。

sendStringParametersAsUnicode(缺省值-true) : 決定發送給SQL Server數據庫的字符串是以Unicode或數據庫缺省字符集進行編碼。此屬性將會嚴重影響SQL Server 2000的性能,因為SQL Server2000并不會進行字符串類型轉換,這意味著如果某個索引列是Unicde而字符串是以缺省編碼(或其他編碼)提交到服務器,SQL Server將無法使用索引索查而只能使用索引掃描。對于Sybase,屬性決定那些無法以服務器字符集編碼的字符串將以Unicde編碼方式發送。由于編碼邏輯會帶來性能上的下降,因此除非用了unitext或univarchar數據類型,或字符集為utf-8,否則將此屬性設置為false。

socketTimeout(缺省值-0) : 網絡活動性等待超時時長。謹慎使用。如果設置屬性為非負值,必須確保此數值大于服務器對請求進行響應所需的時間。一旦超時,網絡鏈接將會被關閉。此參數對于檢測公用環境中的無效網絡連接有用。參見loginTimeout。

ssl(缺省值-off) : 指定是否以及如何使用SSL安全連接。

值 描述
off 不使用ssl;缺省
request 請求使用ssl;如服務器不同意此請求,則使用普通連接
require 請求使用ssl;如服務器不同意此請求,則拋出一個異常
authenticate 同require;并額外附加對服務器SSL證書有效性的檢查

tcpNoDelay(缺省值-true) : true允許套接字TCP_NODELAY屬性;false則禁止。

TDS(缺省值-SQL Server為”8.0”;Sybase為”5.0”) : TDS(Tabular Data Stream)版本。TDS是SQL Server和Sybase服務器與客戶端進行通信的傳輸協議。jTDS支持TDS 4.2,5.0,7.0,8.0。SQL Server 6.5和Sybase 10使用TDS 4.2;Sybase 11使用TDS 5.0;SQL Server 7.0使用TDS 7.0,此版本也可使用于SQL Server 2000;SQL Server 2000和SQL Server 2005使用TDS 8.0。
通常情況下,新版本的數據庫兼容低版本的協議。這意味著,對于SQL Server 7.0可以使用TDS 4.2,但將會受到低版本協議的某些限制(例如,使用TDS 4.2將會限制 VARCHAR為255個字符以內)。結論,連接到SQL Server 6.5或Sybase時,必須將此屬性設置為”4.2”。連接至Sybase時,不能設置屬性值為”7.0”或”8.0”,因為這兩個版本為SQL Server專用協議版本。進一步,連接到任何版本的SQL Server時,都不能將此屬性設置為Sybase獨有版本5.0。

useCursors(缺省值-false) : 指示對前向只讀的結果集合,jTDS用服務器端游標(cursor)取代直接選擇方式(AKA firehose cursor)(對于其他類型的結果集合,使用服務器端或客戶端游標)。
使用firehose游標,對于SELECT查詢,服務器以所有結果記錄作為響應。這種方法速度快,但意味著驅動如果想在所有響應記錄得到處理前發出另一個請求的話,必須將所有當前記錄緩存起來。所以在每個連接都使用了多條語句的情況下,使用服務器游標的方法更合理。后者允許驅動每次僅請求有限的記錄數(通過fetchSize屬性可設置)。同時,后者將會帶來額外的請求-響應周期,但驅動僅需較少的數據。
如果此屬性設置為真,SQL Server將會生成一個快速前向游標(fast forward-only cursor);而Sybase將會生成一個前向只讀游標。

useJCIFS(缺省值-false) : 控制Windows操作系統之上的命名管道使用jCIFS庫或本地文件系統方式。(當操作系統不是Windows時,總是使用jCIFS庫)。可應用于使用命名管道連接位于不同域的客戶端和服務器的情況。參見namedPipe。jTDS-1.2起支持。

useLOBs(缺省值-true) : 控制大數據類型(如IMAGE,TEXT/NTEXT)是否應當被缺省映射為LOBs或Java類型(String和byte[])。返回的JDBC類型常量也可以由以下屬性控制:Types.BLOB(對于IMAGE);屬性為true時,Types.CLOB(對于TEXT/NTEXT),Types.LONGVARBINARY(對IMAGE);屬性為false時,Types.LONGVARCHAR(對TEXT/NTEXT)。
此屬性可以應用在以下情況:直接打印由getObject()方法返回的數值時(例如,使用JSTL或其他框架時),Blob和Clob未提供toString()方式(因沒有需要,并且容易在記錄日志數據等情況下造成內存耗盡錯誤)。此屬性缺省值設為true的優點在于可以通過lobBuffer屬性來控制那些緩存在內存中的大塊頭對象;屬性設為false,內部仍將使用Blob和Clob實現,在調用getObject()方法時值將會被量化到內存中,認樣可能會導致內存問題。

useNTLMv2(缺省值-false) : 使用windows認證方式時,設置為true將會發送LMv2/NTLMv2響應。

user(必需) : 登錄用戶名。使用getConnection(String url, String user, String password)方法時用戶名以參數形式轉入,因此不需要在url中設定;如果使用getConnection(String url, Properties info)或JtdsDataSource時必須在url中指定。

wsid(缺省值-客戶端主機名) : 工作站ID。無實際意義,Enterprise Manager或Profiler會顯示在連接信息中。

xaEmulation(缺省值-true) : 屬性值為true時,模擬XA分布式事務支持;為flase,使用試驗性的真正的分布式事務支持。真正的分布式事務支持僅可應用于SQL Server 2000,并且需要安裝目標主機中安裝有外部存儲介質(參見發行包中README.XA文件)。

屬性可以通過以下三種方式傳遞給jTDS:url; getConnection()中的屬性對象;JtdsDataSource的設置器(如果連接是通過DataSource而不是使用DriverManager獲得)。使用JtdsDataSource方式時沒有URL,因此提供了三個其他屬性(帶有setter/getter方法)來設置url語法中的serverName,portNumber和databaseName(各自意義相當明確)。

SQLServer JTDS 連接串格式

版權所有 IT知識庫 CopyRight ? 2009-2015 IT知識庫 IT610.com , All Rights Reserved. 京ICP備09083238號
广东25选5开奖结果