#sql-server #ms-access #ssis #database-connection
#sql-server #ms-access #ssis #база данных-подключение
Вопрос:
У меня есть база данных SQL, которая централизует все данные в нашем агентстве; однако мы также получаем данные из внешних источников, которые необходимо проанализировать в нашей структуре БД. Один из наших партнеров поддерживает базу данных Access 2016, которую они предоставляют нам еженедельно для выполнения различных анализов. Моя цель — создать пакет SSIS (2017), который будет перемещать данные из базы данных Access в таблицы SQL; замена базы данных Access на обновленную версию и повторный запуск пакета SSIS по расписанию.
Я пытаюсь настроить диспетчер подключений для базы данных Access, но не могу найти параметр драйвера в предоставленном списке DSN для файлов .accdb, только для файлов .mdb типов, когда я пытаюсь создать строку подключения. Как мне создать соединение для базы данных Access 2016 (т. Е. .accdb)???
Комментарии:
1. Драйверы Jet 4.0 понимают только файлы .mdb. Вы загрузили и установили новые распространяемые компоненты Microsoft Access Database Engine для 2010 или 2016 года?
2. Да, я заставил его работать после установки нового компонента Access Database Engine. Спасибо!
Ответ №1:
Вам не нужен SSIS для чего-то подобного. Вы можете просто экспортировать данные из MS Access на SQL Server, не отвечая на другое приложение.
Этот пример VBA будет экспортировать данные из таблицы в Access на SQL Server.
Option Compare Database
Private Sub Command0_Click()
Dim sTblNm As String
Dim sTypExprt As String
Dim sCnxnStr As String, vStTime As Variant
Dim db As Database, tbldef As DAO.TableDef
On Error GoTo ExportTbls_Error
sTypExprt = "ODBC Database" 'Export Type
sCnxnStr = "ODBC;DRIVER=SQL Server;SERVER=your_sever_name" amp; stServer amp; ";DATABASE=your_database_name" amp; stDatabase amp; ";Trusted_Connection=Yes"
vStTime = Timer
Application.Echo False, "Visual Basic code is executing."
Set db = CurrentDb()
'need a reference to Microsoft DAO 3.x library
For Each tbldef In db.TableDefs
'Don’t export System and temporary tables
Debug.Print tbldef.Name
If tbldef.Name Like "*Table1*" Then
sTblNm = tbldef.Name
DoCmd.TransferDatabase acExport, sTypExprt, sCnxnStr, acTable, sTblNm, sTblNm
End If
Next tbldef
MsgBox "Done! Time taken=" amp; (Timer - vStTime)
On Error GoTo 0
SmoothExit_ExportTbls:
Set db = Nothing
Application.Echo True
Exit Sub
ExportTbls_Error:
MsgBox "Error " amp; Err.Number amp; " (" amp; Err.Description amp; ") in procedure ExportTblsODST"
Resume SmoothExit_ExportTbls
End Sub
Смотрите ссылку ниже для получения дополнительной информации.
https://www.mssqltips.com/sqlservertip/2484/import-data-from-microsoft-access-to-sql-server/