У меня есть большое количество Azure баз данных, в настоящее время 6, но со временем go будет работать.
К базам данных обращаются очень редко, поэтому для экономии средств они устанавливаются в автоматический режим сна после 1 час.
Мне нужно подключиться к одной или нескольким из этих баз данных в Access для извлечения данных, поэтому мне нужно активировать правильные базы данных, что занимает около 30-60 секунд каждая.
Я пытаясь динамически добавить их в виде связанных таблиц, используя AttachDSNLessTable
, но прежде чем я вызову это, мне нужно разбудить базы данных. Я хотел бы сделать это асинхронно, поскольку процесс пробуждения может занять некоторое время, которое станет нелепым при увеличении числа баз данных.
Моя идея заключалась в создании массива соединений ADODB, l oop через массив и вызовите метод .Open
с параметром adAsyncConnect
, затем контролируйте состояние подключения всех подключений, пока все они не отобразятся как Открыто или нет ошибок.
Код, который у меня есть пытался ниже:
Dim databases() As DatabaseInfo
Dim connections() As ADODB.Command
Dim drv As String
Dim i As Integer
databases = getDatabaseInfo()
drv = GetDriverName()
ReDim connections(UBound(databases))
For i = 0 To UBound(databases)
Dim c As ADODB.Command
Dim con As ADODB.Connection
Dim sConn As String
sConn = "ODBC;DRIVER=" & drv & ";SERVER=" & databases(i).Server & ";DATABASE=" & databases(i).Name & ";UID=" & databases(i).Username & ";PWD=" & databases(i).Password
connections(i) = New ADODB.Connection 'Receive error
connections(i).Open sConn, , , adAsyncConnect
Next i
Я получаю ошибку компиляции в строке connections(i) = New ADODB.Connection
, ошибка Invalid use of property
.
Означает ли это, что нет никакого способа использовать ADODB соединения в массиве? Если нет, то есть ли другой способ асинхронного подключения к списку баз данных?