Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Setel prefetch baris default di SQL Server menggunakan driver JDBC

Cara yang biasa digunakan untuk menyetel ukuran pengambilan baris adalah:

  1. Melalui java.sql.Connection kelas implementasi vendor metode khusus (mis. OracleConnection.setDefaultRowPrefetch )
  2. Melalui java.sql.Statement.setFetchSize(int) :memberikan petunjuk kepada driver tentang ukuran pengambilan baris untuk semua ResultSets diperoleh dari Statement ini . Metode ini diwarisi oleh PreparedStatement dan CallableStatement . Sebagian besar driver JDBC mendukungnya.
  3. Melalui java.sql.ResultSet.setFetchSize(int) :memberikan petunjuk kepada pengemudi tentang ukuran pengambilan baris untuk semua ResultSet . ini .

Driver MS SQL Server JDBC tidak mendukung salah satu cara berikut:

  1. Driver MSSQL tidak memiliki metode seperti itu.
  2. Sayangnya, sementara sebagian besar driver menghormati petunjuk tersebut, driver MSSQL tidak. Jadi tidak berguna bagi Anda. Lihat Apa sebenarnya metode Statement.setFetchSize(nSize) lakukan di driver SQL Server JDBC?
  3. Masalah yang sama dengan Statement .

Secara default ia mengambil semua baris dari database kecuali Anda menentukan jenis kursor di driver JDBC. Driver MSSQL tidak dapat secara langsung mengontrol ukuran pengambilan menggunakan metode biasa.

Solusi:

  • Berikan Statement your ke SQLServerStatement dan gunakan metode setMaxRows(int) . Mengapa mereka tidak menerapkan ini dalam metode standar Steve Ballmer hanya tahu;^)
  • Buat driver Anda dengan jenis kursor. Ukuran pengambilan default untuk kursor adalah 1. Setel Connection properti string selectMethod=cursor . Atau, Anda dapat membuat Statement dengan com.microsoft.sqlserver.jdbc.SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLY scrollability untuk akses hanya-maju, akses baca-saja, dan kemudian gunakan setFetchSize metode untuk menyetel kinerja. http://technet.microsoft.com/en -us/library/aa342344%28SQL.90%29.aspx
  • Gunakan SQL (eksklusif) untuk membatasi jumlah baris yang dikembalikan (tidak sama dengan menyetel ukuran pengambilan ):SET ROWCOUNT atau SELECT TOP N
  • Beralih ke sumber terbuka jTDS driver, khusus dibuat untuk mengatasi masalah driver SQL Server. Ini adalah pengemudi yang unggul.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kembalikan Semua Batasan yang Dinonaktifkan di SQL Server (Contoh T-SQL)

  2. bagaimana cara mendapatkan tanggal mulai dan akhir semua minggu antara dua tanggal di server SQL?

  3. SQL Server:klausa GROUP BY untuk mendapatkan nilai yang dipisahkan koma

  4. Tambahkan kolom ke tabel dengan nilai default sama dengan nilai kolom yang ada

  5. Tidak dapat membuka tes basis data yang diminta oleh login. Login gagal. Login gagal untuk pengguna 'xyz\ASPNET'