Перекрестные ссылки через несколько баз данных

Генерация файла protoc Golang поддерживает как proto2, так и proto3. Но в настоящее время плагин Golang из protoc не поддерживает аннотацию метода gRPC.

5
задан Dave Turvey 10 March 2009 в 09:47
поделиться

6 ответов

Вы не хотите вытягивать оба набора данных через то, если Вы не должны делать этого. Вы также собираетесь испытать затруднения при реализации решения Tomalak, так как расположение файла может измениться и даже не могло бы быть легко доступным к самому серверу.

Мое предположение - то, что Ваши пользователи настраивают базу данных Access с людьми/продуктами, или безотносительно этого они интересуются работой с, и вот почему необходимо выбрать через эти две базы данных. Если это так, таблица Access, вероятно, меньше, чем таблица (таблицы) SQL Server. Ваш лучший выбор состоит в том, чтобы вытянуть в данных Доступа, затем использовать это для генерации фильтрованного запроса к SQL Server так, чтобы можно было минимизировать данные, которые отправляются по сети.

Так, самые важные вещи:

  1. Отфильтруйте данные ПО СЕРВЕРУ так, чтобы можно было минимизировать сетевой трафик и также потому что база данных будет быстрее при фильтрации, чем ADO.NET
  2. Если необходимо выбрать набор данных для получения по запросу в приложение, вытяните в меньшем наборе данных и затем используйте это для фильтрации другой таблицы.
3
ответ дан 15 December 2019 в 01:14
поделиться

Сначала необходимо сделать что-то на сервере - ссылаются на Доступ DB как "Связанный сервер".

Затем Вы сможете запросить его из SQL-сервера, выходя из дела, или наполняя в данных однако Вам нравится. Эта веб-страница дает хороший обзор того, как сделать это.

http://blogs.meetandplay.com/WTilton/archive/2005/04/22/318.aspx

0
ответ дан 15 December 2019 в 01:14
поделиться

Принятие 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.

1
ответ дан 15 December 2019 в 01:14
поделиться

Если я считал вопрос правильно, Вы НЕ пытаетесь к перекрестной ссылке через несколько баз данных.

Необходимо просто сослаться на детали о конкретном ФАЙЛЕ, который в этом случае, мог содержать:

первичный ключ, родительская контрольная сумма файла (если это - модификация), контрольная сумма файла, в последний раз известный автор, число пересмотра, дата последнего изменения...

И затем что первичный ключ при добавлении информации получил из анализа того файла с помощью программы.

При фактической необходимости в распределенной базе данных возможно, Вы предпочли бы использовать нереляционную базу данных, такую как LDAP.

Если Вы не можете использовать LDAP, но должны использовать реляционную базу данных, Вы могли бы рассмотреть использование GUID, чтобы гарантировать, что Ваши первичные ключи хороши.

0
ответ дан 15 December 2019 в 01:14
поделиться

Так как Вы не даете достаточно информации, я оказываюсь перед необходимостью делать некоторые предположения.

Принятие:

  1. SQL Server и база данных Access не находятся на том же компьютере
  2. SQL Server не видит базы данных Access по доле файла, или было бы слишком трудно достигнуть этого.
  3. Вы не должны делать соединений между базой данных доступа и SQL-сервером, только использовать данные из базы данных доступа как элементы поиска Вашего где пункт

Если вышеупомянутые предположения корректны, то можно просто использовать ADO, чтобы открыть базу данных Access и получить данные, в которых Вы нуждаетесь, возможно в наборе данных или таблице данных. Затем извлеките данные, в которых Вы нуждаетесь и подаете, они к другому ADO запрашивают к Вашему SQL Server в динамическом операторе Where, подготовленном операторе, или через параметры к хранимой процедуре.

Другие люди решений дают, все предполагают, что необходимо сделать соединения на данных или иначе выполнить SQL, который включает обе базы данных. Чтобы сделать это, необходимо использовать связанные базы данных или иначе импортировать данные в таблицу (возможно, временный).

0
ответ дан 15 December 2019 в 01:14
поделиться

Вы попытались сравнить того, что происходит, если Вы связываетесь от фронтэнда Доступа до Вашего SQL Server через ODBC и пишете свой SQL, как будто обе таблицы локальны? Вы могли затем сделать трассировку на сервере для наблюдения точно, что Струя отправляет на сервер. Вы могли бы быть удивлены относительно того, как эффективная Струя с такого рода вещью. Если Вы связываетесь на поле ключа (например, и поле ID, ли от SQL Server или не), вероятно, имело бы место, что Струя отправит список идентификаторов. Или Вы могли записать свой SQL, чтобы сделать это тот путь (использующий В ВЫБОРЕ... в Вашем операторе Where).

В основном, как эффективные вещи будут, зависит от того, где Ваш оператор Where будет выполняемым. Если, например, Вы присоединитесь к локальной таблице Jet со связанной таблицей SQL Server на единственном поле и отфильтруете результаты на основе значений в локальной таблице, то это, очень вероятно, будет чрезвычайно эффективно, в этом единственная вещь, которую Струя отправит на сервер, - то, что необходимо отфильтровать таблицу SQL Server.

Снова, тем не менее, это собирается зависеть полностью от точно, что Вы пытаетесь сделать (т.е. какие поля Вы фильтруете на). Но дайте Струе шанс видеть, умно ли это, в противоположность предположению от летучей мыши, что Струя завинтит его. Это может потребовать, чтобы некоторая тонкая настройка заставила Струю работать эффективно, но если можно сохранить всю логику клиентской, Вы более обеспечены, чем попытка слоняться без дела с отслеживанием всех баз данных Access с сервера.

0
ответ дан 15 December 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: