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

SQL Server 2012 meminta data Access 2007 menggunakan kesalahan OPENROWSET

Akhirnya, setelah beberapa kali gagal untuk membuat SQL Server "berbicara dengan" database Access – baik sebagai "Server Tertaut" di SSMS atau melalui OPENROWSET() di T-SQL – Saya menemukan posting blog ini yang menawarkan tiga (3) saran berikut.

Tweak #1:Pengaturan Penyedia OLE DB

Penyedia OLE DB untuk ACE (atau Jet) harus mengaktifkan opsi "Parameter dinamis" dan "Izinkan dalam proses". Di SSMS, buka

Objek Server> Server Tertaut>Penyedia

cabang, klik kanan "Microsoft.ACE.OLEDB.12.0" (atau "Microsoft.Jet.OLEDB.4.0"), pilih "Properties", dan pastikan opsi tersebut dipilih:

Tweak #2:Izin folder sementara

Ini adalah salah satu yang membuatku bingung.

Rupanya SQL Server perlu menulis informasi ke dalam file sementara saat menjalankan kueri OLE DB terhadap database Access. Karena SQL Server berjalan sebagai layanan, ia menggunakan folder %TEMP% dari akun tempat layanan berjalan.

Jika layanan SQL Server berjalan di bawah akun "Layanan Jaringan" bawaan, maka folder temp adalah

%SystemRoot%\ServiceProfiles\NetworkService\AppData\Local\Temp

dan jika dijalankan di bawah akun "Layanan Lokal" bawaan, maka folder temp adalah

%SystemRoot%\ServiceProfiles\LocalService\AppData\Local\Temp

Masalah saya adalah SSMS berjalan di bawah saya akun (bukan LAYANAN JARINGAN) jadi saya hanya memiliki akses Baca ke folder Temp

Setelah saya memberi diri saya izin Ubah pada folder itu

dan mengaktifkan kueri OPENROWSET seperti yang didokumentasikan dalam pertanyaan lain di sini, yaitu ...

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO

... kueri saya berfungsi dengan baik:

Tweak #3:memory_to_reserve

Meskipun saya tidak perlu menggunakannya dalam kasus saya, blog yang disebutkan di atas juga mengklaim bahwa menyesuaikan parameter startup "-g memory_to_reserve" untuk layanan SQL Server juga dapat membantu menghindari kesalahan serupa. Untuk melakukannya:

  • luncurkan Manajer Konfigurasi Server SQL
  • klik kanan layanan SQL Server (tab "Layanan SQL Server") dan pilih "Properti"
  • pada tab "Lanjutan", tambahkan -g512; ke pengaturan "Parameter Startup"
  • mulai ulang layanan SQL Server

Untuk detail lebih lanjut tentang pengaturan "memory_to_reserve" lihat artikel MSDN di sini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Parsing string yang dipisahkan koma untuk membuat IN Daftar string dalam klausa Where

  2. SSMS versi 18 – tanpa Diagram Basis Data

  3. Metrik Kinerja SQL Server untuk Tetap Terdepan dalam Game

  4. Perbarui nilai kunci utama menggunakan kerangka kerja entitas

  5. Cara Memeriksa Versi SQL Server Anda