Генерация файла protoc
Golang поддерживает как proto2
, так и proto3
. Но в настоящее время плагин Golang из protoc
не поддерживает аннотацию метода gRPC.
Вы не хотите вытягивать оба набора данных через то, если Вы не должны делать этого. Вы также собираетесь испытать затруднения при реализации решения Tomalak, так как расположение файла может измениться и даже не могло бы быть легко доступным к самому серверу.
Мое предположение - то, что Ваши пользователи настраивают базу данных Access с людьми/продуктами, или безотносительно этого они интересуются работой с, и вот почему необходимо выбрать через эти две базы данных. Если это так, таблица Access, вероятно, меньше, чем таблица (таблицы) SQL Server. Ваш лучший выбор состоит в том, чтобы вытянуть в данных Доступа, затем использовать это для генерации фильтрованного запроса к SQL Server так, чтобы можно было минимизировать данные, которые отправляются по сети.
Так, самые важные вещи:
Сначала необходимо сделать что-то на сервере - ссылаются на Доступ DB как "Связанный сервер".
Затем Вы сможете запросить его из SQL-сервера, выходя из дела, или наполняя в данных однако Вам нравится. Эта веб-страница дает хороший обзор того, как сделать это.
http://blogs.meetandplay.com/WTilton/archive/2005/04/22/318.aspx
Принятие SQL-сервера может добраться до баз данных Access, Вы могли создать запрос OpenRowset через них.
SELECT a.*
FROM SqlTable
JOIN OPENROWSET(
'Microsoft.Jet.OLEDB.4.0',
'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';'admin';'',
Orders
) as b ON
a.Id = b.Id
Вы просто изменили бы путь к базе данных Access во времени выполнения для получения до другого MDBs.
Если я считал вопрос правильно, Вы НЕ пытаетесь к перекрестной ссылке через несколько баз данных.
Необходимо просто сослаться на детали о конкретном ФАЙЛЕ, который в этом случае, мог содержать:
первичный ключ, родительская контрольная сумма файла (если это - модификация), контрольная сумма файла, в последний раз известный автор, число пересмотра, дата последнего изменения...
И затем что первичный ключ при добавлении информации получил из анализа того файла с помощью программы.
При фактической необходимости в распределенной базе данных возможно, Вы предпочли бы использовать нереляционную базу данных, такую как LDAP.
Если Вы не можете использовать LDAP, но должны использовать реляционную базу данных, Вы могли бы рассмотреть использование GUID, чтобы гарантировать, что Ваши первичные ключи хороши.
Так как Вы не даете достаточно информации, я оказываюсь перед необходимостью делать некоторые предположения.
Принятие:
Если вышеупомянутые предположения корректны, то можно просто использовать ADO, чтобы открыть базу данных Access и получить данные, в которых Вы нуждаетесь, возможно в наборе данных или таблице данных. Затем извлеките данные, в которых Вы нуждаетесь и подаете, они к другому ADO запрашивают к Вашему SQL Server в динамическом операторе Where, подготовленном операторе, или через параметры к хранимой процедуре.
Другие люди решений дают, все предполагают, что необходимо сделать соединения на данных или иначе выполнить SQL, который включает обе базы данных. Чтобы сделать это, необходимо использовать связанные базы данных или иначе импортировать данные в таблицу (возможно, временный).
Вы попытались сравнить того, что происходит, если Вы связываетесь от фронтэнда Доступа до Вашего SQL Server через ODBC и пишете свой SQL, как будто обе таблицы локальны? Вы могли затем сделать трассировку на сервере для наблюдения точно, что Струя отправляет на сервер. Вы могли бы быть удивлены относительно того, как эффективная Струя с такого рода вещью. Если Вы связываетесь на поле ключа (например, и поле ID, ли от SQL Server или не), вероятно, имело бы место, что Струя отправит список идентификаторов. Или Вы могли записать свой SQL, чтобы сделать это тот путь (использующий В ВЫБОРЕ... в Вашем операторе Where).
В основном, как эффективные вещи будут, зависит от того, где Ваш оператор Where будет выполняемым. Если, например, Вы присоединитесь к локальной таблице Jet со связанной таблицей SQL Server на единственном поле и отфильтруете результаты на основе значений в локальной таблице, то это, очень вероятно, будет чрезвычайно эффективно, в этом единственная вещь, которую Струя отправит на сервер, - то, что необходимо отфильтровать таблицу SQL Server.
Снова, тем не менее, это собирается зависеть полностью от точно, что Вы пытаетесь сделать (т.е. какие поля Вы фильтруете на). Но дайте Струе шанс видеть, умно ли это, в противоположность предположению от летучей мыши, что Струя завинтит его. Это может потребовать, чтобы некоторая тонкая настройка заставила Струю работать эффективно, но если можно сохранить всю логику клиентской, Вы более обеспечены, чем попытка слоняться без дела с отслеживанием всех баз данных Access с сервера.