Akses dengan Microsoft SQL Server – Impor Kumpulan Data Besar Menggunakan SSIS
Meninggal dengan Kueri Sisipan Akses
Jika Anda pernah mencoba menyisipkan sejumlah besar rekaman ke SQL Server menggunakan kueri penyisipan Access, (15.000 rekaman atau lebih), Anda harus menunggu lama, membicarakan waktu rehat kopi di sini, (dari beberapa menit ke 15). Bahkan dapat menyebabkan database Anda hang jika dataset terlalu besar. Jadi, opsi apa yang Anda miliki?
XML adalah upaya pertama yang hebat
Salah satu metode yang biasanya kami gunakan dalam kode kami adalah bekerja dengan data XML, saya tidak akan membahas terlalu detail tentang itu di sini, tetapi ini adalah tautan yang ditulis oleh seorang rekan saya. Ini mencakup seri 2 bagian yang membahas bekerja dengan data XML dengan backend SQL Server.
XML adalah alat yang hebat untuk dicoba, tetapi bahkan itu mungkin tidak cukup cepat dengan kumpulan data yang berjumlah 10.000-an. Namun keuntungan XML atas pekerjaan SSIS adalah bahwa pekerjaan SSIS memerlukan folder jaringan di mana semua pengguna Access dan server dapat mencapai. Itu tidak akan bekerja dengan baik melalui internet (skenario untuk metode XML awalnya dibuat).
SSIS sangat cepat
Apa yang ingin saya bagikan dengan Anda di sini adalah tentang pengalaman saya bekerja dengan Layanan Integrasi SQL Server. Kami memiliki klien yang databasenya sudah menggunakan metode XML untuk mengunggah data ke server SQL tetapi karena data yang mereka impor memiliki lebih dari 700.000 baris data, diperlukan waktu 20 menit untuk menyelesaikan prosesnya. Ini jelas memakan waktu terlalu lama untuk perusahaan yang sibuk yang perlu menggunakan metode ini setiap hari. Solusi kami adalah menghapus Access dari proses unggah dengan membuat pekerjaan yang akan membaca file CSV langsung dari lokasi file dan mengimpor data ke tabel SQL Server menggunakan skrip T-SQL sederhana.
Akses hanya memulai proses
Pengguna akan memilih file data mereka di Access dan memasukkan informasi lain yang diperlukan, seperti tanggal dan klik tombol proses. Langkah pertama dari kode vba adalah menyimpan nama file dan jalur ke tabel di SQL Server.
'Add import file name to Application
ExecuteMyCommand "UPDATE Application SET SSISDataImportFile = " & PrepareSQLString(Me.txtFileInput)
Berikut adalah kode vba yang digunakan untuk kemudian menjalankan tugas SSIS.
Public Function ImportData()
On Error GoTo ImportData_Err
Dim rs As ADODB.Recordset
Dim strSQL As String
‘Tambahkan Kode untuk mengaktifkan Paket SSIS
strSQL =“EXEC dbo.uspSSISFileDataImport”
OpenMyRecordset rs, strSQL, rrOpenForwardOnly, rrLockReadOnly, True
‘Berikut ini mengulang prosedur untuk memeriksa apakah pekerjaan telah selesai.
strSQL =“EXEC dbo.uspSSISFileDataImportProcess”
OpenMyRecordset rs, strSQL, rrOpenForwardOnly, rrLockReadOnly, True
Lakukan Hingga rs.Fields(0) =4 Dan Bukan IsNull(rs.Fields(3))
strSQL =“EXEC dbo.uspSSISFileDataImportProcess”
OpenMyRecordset rs, strSQL, rrOpenForwardOnly, rrLockReadOnly, True
Putaran
ImportData_Exit:
Setel rs =Tidak Ada
Keluar dari Fungsi
ImportData_Err:
MsgBox Err.Description
Lanjutkan ImportData_Exit
Lanjutkan 'untuk debugging
Fungsi Akhir
CREATE PROCEDURE [dbo].[uspFileDataImport]
AS
BEGIN
SET NOCOUNT ON;
JALANKAN msdb.dbo.sp_start_job @Job_name =N'SSISDataImport';
SELESAI;
CREATE PROCEDURE [dbo].[uspSSISFileDataImportProcess]
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@execution_id INT,
@JobStatusID INT,
@JobStatus Varchar(250),
@StartTime DATETIME2,
@EndTime DATETIME2;
WAITFOR DELAY '00:00:03′;
PILIH @execution_id=MAX ([execution_id])
DARI [SSISDB].[internal].[executions];
PILIH
@JobStatusID =e.executable_id,
@JobStatus =e.executable_name,
@StartTime =s.start_time,
@EndTime =s.end_time
DARI SSISDB .internal.executables SEBAGAI e
KIRI GABUNG SSISDB.internal.executable_statistics AS s
ON e.executable_id =s.executable_id DAN s.execution_id =@execution_id;
SELECT @JobStatusID, @JobStatus, @StartTime, @EndTime;
END;
Prosedur tersimpan ini akan menjalankan pekerjaan sederhana dengan desain berikut.
Dapatkan Parameter – Ini adalah skrip T-SQL sederhana yang memilih nama file dan jalur dari tabel sql dan memberikan nilai ke parameter masing-masing. PILIH SSISDataImportFile DARI tblApplicationSettings; Nama file akan berbeda dari hari ke hari sehingga menggunakan parameter adalah cara yang harus dilakukan, nama file dimasukkan ke objek yang tidak terikat pada formulir akses kemudian dengan pengkodean VBA disimpan ke tabel SQL, memungkinkan paket untuk membaca ini dari tabel SQL (lihat kode di atas).
Memotong Input Hari Ini – Skrip T-SQL sederhana untuk menghapus data yang ada di tabel impor sementara, dijalankan melalui catatan untuk membuat perubahan atau pembaruan. Anda mungkin perlu mengimpor data terlebih dahulu ke tabel sementara jika Anda perlu memverifikasi data atau membuat perubahan lebih lanjut pada data sebelum menyimpan di tabel permanen.
Tugas Aliran Data – Dijelaskan di bagian berikut.
Sumber File Datar – Menggunakan parameter dari langkah pertama pekerjaan dapat mengakses file teks.
File perlu disimpan dalam drive jaringan atau folder yang dapat diakses oleh server.
Tujuan OLE DB – Langkah terakhir dari pekerjaan ini adalah proses yang mengimpor data ke tabel SQL Server. Di sini Anda mengidentifikasi koneksi database dan nama tabel. Ini juga merupakan tempat Anda akan memetakan bidang dari file teks ke bidang tujuan dalam tabel.
Akhirnya saya membuat prosedur tersimpan untuk mengembalikan executionID. Tujuannya di sini adalah bahwa prosedur tersimpan tidak akan keluar sampai pekerjaan selesai, mencegah kode VBA Microsoft Access melanjutkan hingga pekerjaan selesai. Ide pekerjaan ini hanya untuk memasukkan data ke dalam tabel SQL Server dan setelah itu Anda dapat melakukan modifikasi apa pun pada data melalui Access dan akhirnya menyimpan data dalam tabel permanen.
Dari 20 menit hingga 3 menit!
Klien kami sangat senang dengan hasilnya, karena dapat memanfaatkan teknologi SQL Server yang luar biasa bersama dengan Access memungkinkan saya membuat langkah besar dalam efisiensi dalam pekerjaan saya, tidak sabar untuk segera mencobanya lagi!
Bergabunglah dengan Susan Pyne Selasa depan 12 Februari saat dia membahas cara mengenkripsi kolom di SQL Server seperti kartu kredit dan nomor jaminan sosial, dan cara mendekripsinya untuk ditampilkan di Access, bagus untuk melindungi data berharga! Untuk mempelajari lebih lanjut, silakan kunjungi https://buff.ly/2I7BPii #MSAccess @MSAccess #Encryption