Выбор данных из таблицы другой базы на SQL Server
Быстрый ответ
Чтобы сделать запрос к таблице из другой базы данных на SQL Server, применяется трёхкомпонентное наименование: [ИмяБазыДанных].[ИмяСхемы].[ИмяТаблицы]
. Например, запрос к таблице Сотрудники
в базе данных HR
будет примерно таким:
SELECT * FROM [HR].[dbo].[Сотрудники]; -- Давайте обратим внимание на 'Сотрудников'!
HR
— это название целевой базы данных, dbo
— стандартная схема, а Сотрудники
— это название рассматриваемой таблицы.
В подробностях: Навигация по различным базам данных
Работа с множеством баз данных на одном сервере и переход между разными серверами требуется от SQL Server использования различных методов для обеспечения нужной эффективности.
Запрос через сервера с помощью связанных серверов
Для доступа к базам данных, находящимся на различных серверах, нужно установить связанные серверы через sp_addlinkedserver
. Это позволяет запросам обращаться к отдаленным ресурсам так, как если бы они были локальными.
EXEC sp_addlinkedserver 'TheNeighbourServer'; -- Мы все здесь как соседи.
После установки связанного сервера запросы выполняются так:
SELECT * FROM [ДалекийСервер].[ИспользуемаяБД].[Схема].[ЦелеваяТаблица];
Например, так будет выглядеть доступ к таблице "Сотрудники" в базе данных "testdb" на "тестовом сервере" из вашей текущей базы "proddb" на "рабочем сервере":
SELECT * FROM [testserver].[testdb].[dbo].[Сотрудники]; -- Вот так мы подключаемся к testserver, там сегодня отличная погода!
Прямые запросы к базе данных в SQL Server 2012+
В версии SQL Server 2012 и новее прямые запросы к таблицам, расположенным в различных базах данных на одном сервере, стали еще проще. Трехкомпонентное имя объекта отлично справляется с этой задачей, и нет необходимости в дополнительной установке связанных серверов:
SELECT * FROM [БазаДанныхНаВызов].dbo.[МарафонскаяТаблица];
Вопросы безопасности: Учет баз данных
При выполнении запросов между различными базами данных или серверами важно уделить особое внимание вопросам безопасности для обеспечения конфиденциальности и сохранности данных. Используйте нужные права доступа и принимайте во внимание цепочки владения, чтобы обеспечить сохранность данных.
Визуализация
Предположим, вы обращаетесь к данным таблицы из другой базы данных на SQL Server. Это можно охарактеризовать готовкой на совместном кулинарном мастер-классе, когда вам предстоит использовать продукты со склада:
SELECT * FROM ОбщийСклад.[Инвентарь].dbo WHERE типТовара = 'Специи'; -- Пришло время добавить вкуса в ваш запрос!
Иллюстративное представление:
🍲 Следуем новому рецепту
🛒 Берем ингредиенты со склада
Переводим кулинарную метафору в синтаксис SQL:
SELECT инвентарь FROM [ОбъединеннаяКухняСообщества].[Склад].[ПолкАСекцияZ] WHERE типТовара = 'Специи';
Соединив ваши кулинарные навыки с ингредиентами со склада, вы сможете создать истинный кулинарный шедевр.
Масштабируемость: Запросы с связанными серверами
Бывают случаи, когда необходим доступ к удаленному серверу. Но не стоит пугаться, структура запроса изменится незначительно, ничего фантастического.
Настройка связанного сервера:
Прежде всего, задайте учетные данные, а затем настройте связанный сервер:
EXEC sp_addlinkedserver
@server=N'ПсевдонимСервера',
@srvproduct=N'',
@provider=N'SQLNCLI',
@datasrc=N'АдресСервера'; -- Давайте отправимся в живописное путешествие!
Выполнение запроса:
После успешной настройки делайте запросы к таблицам удаленного сервера:
SELECT * FROM [ПсевдонимСервера].[МестоположениеБД].[РасположениеСхемы].[АдресТаблицы]
Не забудьте заменить все плейсхолдеры на актуальные значения: ПсевдонимСервера
, МестоположениеБД
, РасположениеСхемы
и АдресТаблицы
.
Взаимовыгода — Синонимы для упрощения запросов
В SQL Server синонимы дают вам удобный способ обращения к часто используемым таблицам из других баз данных или серверов. Это все равно, что ввести псевдоним для длинных названий таблиц:
CREATE SYNONYM МойСотрудник FOR [ДалекийСервер].[HR].[dbo].[Сотрудники]; -- Позвольте вам представить 'МойСотрудник'
Теперь запросы можно делать еще проще:
SELECT * FROM МойСотрудник; -- 'МойСотрудник' всегда готов помочь вам!
Полезные материалы
- Различные способы удаления дубликатов строк из SQL таблицы — давайте вспомним стратегии удаления дубликатов данных в SQL.
- php – Redirect to a page does not work if built with variable – Stack Overflow — обсудим проблемы перенаправления в PHP, проанализируем реальные ситуации и предложенные решения.
- Использование синонимов в SQL Server для улучшения управляемости — изучим, как упрощать запросы между базами данных с помощью синонимов.
- SQL Server: Понимание механизма перекрестной цепочки владения базами данных — подробно разберем, как перекрестная цепочка владения влияет на безопасность в SQL Server.
- Понимание "множественного" и "процедурного" подходов в SQL – CodeProject — глубоко погрузимся в основы множественного и процедурного подходов, которые помогают оптимизировать запросы в SQL.