Объединить таблицы из двух баз данных в C # - PullRequest
3 голосов
/ 18 августа 2011

В SQL Server этот запрос выполняется без проблем ...

SELECT SUM(Esi) AS Dispo 
FROM [mdb].[dbo].[Query1] AS A
  INNER JOIN [mdb2].[dbo].[TieCol] as B ON A.Alias=B.IDAlias 
WHERE Alias LIKE 'SETUP%'

Я соединяю две таблицы, которые находятся в двух разных базах данных (mdb и mdb2).

Но как я могу сделать это в моем приложении .NET?Когда мне нужно использовать это утверждение

string cmdText = "SELECT SUM(Esi) AS Dispo 
                  FROM [mdb].[dbo].[Query1] AS A
                    INNER JOIN [mdb2].[dbo].[TieCol] as B ON A.Alias=B.IDAlias 
                  WHERE Alias LIKE 'SETUP%'";

this.OP = new SqlConnection(ConfigurationManager.ConnectionStrings["mdb2"].ConnectionString);
SqlCommand sqlCommand = new SqlCommand(cmdText, this.OP);

, я не могу его выполнить, поскольку this.OP - это соединение с mdb2 ... А для mdb?

Какможно одновременно подключиться к обеим базам данных?

Ответы [ 3 ]

3 голосов
/ 18 августа 2011

Соединение SQL с сервером - исходный каталог в строке соединения ведет себя как use - он устанавливает базу данных по умолчанию.

Таким образом, ваш SQL-запрос из 3 частей должен работать как . Так что возможно

  1. Убедитесь, что учетная запись SQL, используемая вашим приложением (или учетной записью вашего AppPool при использовании Web и Integrated Security), имеет необходимый доступ к обеим базам данных. (используйте RunAs на SQL Enterprise Manager в качестве этой учетной записи и попробуйте выполнить запрос)
  2. Вы можете попытаться сбежать [Alias]
  3. Кроме того, если существует связь между mdb1 и mdb2 (например, SPROCS в mdb1, используйте таблицы в mdb2 и т. Д.), Для удобства обслуживания вы можете рассмотреть возможность добавления представлений в mdb1 для mdb2 объектов. Это позволяет легко идентифицировать зависимости между базами данных. В этом случае ваш запрос может использовать представления, которые выглядят так, как будто они находятся в одной и той же базе данных, хотя базовая зависимость от mdb2 все еще там.
2 голосов
/ 18 августа 2011

Я не уверен, есть ли способ сделать это в строке подключения. Но вы можете сделать это, используя ссылку на таблицу из четырех частей: [server].[database].[table].[column].

0 голосов
/ 15 января 2014

Вашему приложению C # нужно только подключиться к одному серверу базы данных для этого запроса.Скажем, ваше приложение C # подключилось к [mdb].База данных [mdb2] должна быть связана с сервером в базе данных [mdb].

Поскольку этот запрос можно выполнить на сервере sql, поэтому к обеим базам данных должен быть подключен один сервер SQLиспользуйте этот сервер sql в строке подключения C #.Вот и все!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...