Связанные таблицы - от SQL Server 2008 до SQL Server 2005 - PullRequest
1 голос
/ 15 сентября 2010

У меня есть сервер баз данных, который в настоящее время имеет две базы данных, назовите их [A] и [B].

[A] - это стандартная база данных, используемая для моего приложения [B] используется другим приложением (которое создает значительную нагрузку на сервер), однако мы экономно используем несколько таблиц (которые распределяются между моим приложением и основным приложением, которое использует [B]). В последнее время использование [B] увеличивается, и это приводит к длительным периодам ожидания и тайм-аутам в моем приложении.

Я открыт для альтернативных идей, но на данный момент самое быстрое потенциальное решение, которое я нашел, - это получить второй сервер базы данных и перейти на [A] к этому. Тем не менее, мне нужен доступ к некоторым таблицам в [B] - в идеале, с минимальным количеством изменений кода.

Мы думали, что-то вроде установки:

Ток: Сервер БД 1 {[A], [B]} (SQL Server 2005)

Новая настройка БД Сервер 1 {[B]} (SQL Server 2005) Сервер БД 2 {[A], [B]} (SQL Server 2008)

Где в новой настройке DBServer2. [B] является связанной таблицей (типом) с DBServer1. [B]

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

Так, например, [B] имеет таблицы Users и Events. Таблица Users обновляется еженедельно в пакетном режиме, и мы часто используем ее, поэтому нам хотелось бы иметь локальную копию на новом DBServer2. Тем не менее, события, которые мы используем гораздо реже и должны быть в режиме реального времени между двумя серверами. В этом случае было бы здорово иметь События в качестве связанной таблицы.

Кроме того, было бы здорово, если бы мы могли использовать одну и ту же разметку для запросов. Сегодня, чтобы запросить один дБ из другого, мы бы сделали что-то вроде

выберите * из списка участников b.events a.dates

Мы хотели бы продолжить это, за исключением того, что сервер базы данных должен знать, что когда мы касаемся событий, он действительно находится по адресу dbserver1.b.events.

Имеет ли это смысл? Я иногда путаюсь.

Спасибо за любую помощь ~ P

Ответы [ 2 ]

0 голосов
/ 16 сентября 2010

Вы можете использовать синонимы для связанных объектов - http://msdn.microsoft.com/en-us/library/ms177544%28SQL.90%29.aspx

Это, к сожалению, работает только для отдельных объектов, вы НЕ МОЖЕТЕ сделать синоним для connectedserver.databasename и затем сослаться на synDBName.table.

0 голосов
/ 15 сентября 2010

"Альтернативная идея" от меня, так как вы сказали, что вы открыты ...

Как насчет изучения причины медлительности?Какую «нагрузку» вы измеряете?Как ваши диски расположены на сервере?

Может быть, вы могли бы использовать больше памяти, другой процессор или некоторые настройки SQL?

Устранение проблем с помощью программного или аппаратного исправления МОЖЕТ быть быстрее, чем получитьсервер и выполняет все установки, а затем решает проблемы интеграции, с которыми вы можете столкнуться.

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