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(快速)
    3 sp_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;如果服務器不支持,則拋出異常
    authenticate require服務器證書相同,但必須由受信任的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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章