Как называется диалоговое окно для создания связи между полями бд
Связи между таблицами базы данных / Хабр
1. Введение
Связи — это довольна важная тема, которую следует понимать при проектировании баз данных. По своему личному опыту скажу, что осознав связи, мне намного легче далось понимание нормализации базы данных.
1.1. Для кого эта статья?
Эта статья будет полезна тем, кто хочет разобраться со связями между таблицами базы данных. В ней я постарался рассказать на понятном языке, что это такое. Для лучшего понимания темы, я чередую теоретический материал с практическими примерами, представленными в виде диаграммы и запроса, создающего нужные нам таблицы. Я использую СУБД Microsoft SQL Server и запросы пишу на T-SQL. Написанный мною код должен работать и на других СУБД, поскольку запросы являются универсальными и не используют специфических конструкций языка T-SQL.
1.2. Как вы можете применить эти знания?
- Процесс создания баз данных станет для вас легче и понятнее.
- Понимание связей между таблицами поможет вам легче освоить нормализацию, что является очень важным при проектировании базы данных.
- Разобраться с чужой базой данных будет значительно проще.
- На собеседовании это будет очень хорошим плюсом.
2. Благодарности
Учтены были советы и критика авторов jobgemws, unfilled, firnind, Hamaruba.
Спасибо!
3.1. Как организовываются связи?
Связи создаются с помощью внешних ключей (foreign key).
Внешний ключ — это атрибут или набор атрибутов, которые ссылаются на primary key или unique другой таблицы. Другими словами, это что-то вроде указателя на строку другой таблицы.
3.2. Виды связей
Связи делятся на:
- Многие ко многим.
- Один ко многим.
- с обязательной связью;
- с необязательной связью;
- Один к одному.
- с обязательной связью;
- с необязательной связью;
Рассмотрим подробно каждый из них.
4. Многие ко многим
Представим, что нам нужно написать БД, которая будет хранить работником IT-компании. При этом существует некий стандартный набор должностей. При этом:
- Работник может иметь одну и более должностей. Например, некий работник может быть и админом, и программистом.
- Должность может «владеть» одним и более работников. Например, админами является определенный набор работников. Другими словами, к админам относятся некие работники.
Работников представляет таблица «Employee» (id, имя, возраст), должности представляет таблица «Position» (id и название должности). Как видно, обе эти таблицы связаны между собой по правилу многие ко многим: каждому работнику соответствует одна и больше должностей (многие должности), каждой должности соответствует один и больше работников (многие работники).
4.1. Как построить такие таблицы?
Мы уже имеем две таблицы, описывающие работника и профессию. Теперь нам нужно установить между ними связь многие ко многим. Для реализации такой связи нам нужен некий посредник между таблицами «Employee» и «Position». В нашем случае это будет некая таблица «EmployeesPositions» (работники и должности). Эта таблица-посредник связывает между собой работника и должность следующим образом:
Слева указаны работники (их id), справа — должности (их id). Работники и должности на этой таблице указываются с помощью id’шников.
На эту таблицу можно посмотреть с двух сторон:
- Таким образом, мы говорим, что работник с id 1 находится на должность с id 1. При этом обратите внимание на то, что в этой таблице работник с id 1 имеет две должности: 1 и 2. Т.е., каждому работнику слева соответствует некая должность справа.
- Мы также можем сказать, что должности с id 3 принадлежат пользователи с id 2 и 3. Т.е., каждой роли справа принадлежит некий работник слева.
4.2. Реализация
Диаграмма

Код на T-SQL
create table dbo.Employee ( EmployeeId int primary key, EmployeeName nvarchar(128) not null, EmployeeAge int not null ) -- Заполним таблицу Employee данными. insert into dbo.Employee(EmployeeId, EmployeeName, EmployeeAge) values (1, N'John Smith', 22) insert into dbo.Employee(EmployeeId, EmployeeName, EmployeeAge) values (2, N'Hilary White', 22) insert into dbo.Employee(EmployeeId, EmployeeName, EmployeeAge) values (3, N'Emily Brown', 22) create table dbo.Position ( PositionId int primary key, PositionName nvarchar(64) not null ) -- Заполним таблицу Position данными. insert into dbo.Position(PositionId, PositionName) values(1, N'IT-director') insert into dbo.Position(PositionId, PositionName) values(2, N'Programmer') insert into dbo.Position(PositionId, PositionName) values(3, N'Engineer') -- Заполним таблицу EmployeesPositions данными. create table dbo.EmployeesPositions ( PositionId int foreign key references dbo.Position(PositionId), EmployeeId int foreign key references dbo.Employee(EmployeeId), primary key(PositionId, EmployeeId) ) insert into dbo.EmployeesPositions(EmployeeId, PositionId) values (1, 1) insert into dbo.EmployeesPositions(EmployeeId, PositionId) values (1, 2) insert into dbo.EmployeesPositions(EmployeeId, PositionId) values (2, 3) insert into dbo.EmployeesPositions(EmployeeId, PositionId) values (3, 3)
ОбъясненияС помощью ограничения foreign key мы можем ссылаться на primary key или unique другой таблицы. В этом примере мы
- ссылаемся атрибутом PositionId таблицы EmployeesPositions на атрибут PositionId таблицы Position;
- атрибутом EmployeeId таблицы EmployeesPositions — на атрибут EmployeeId таблицы Employee;
4.3. Вывод
Для реализации связи многие ко многим нам нужен некий посредник между двумя рассматриваемыми таблицами. Он должен хранить два внешних ключа, первый из которых ссылается на первую таблицу, а второй — на вторую.
5. Один ко многим
Эта самая распространенная связь между базами данных. Мы рассматриваем ее после связи многие ко многим для сравнения.
Предположим, нам нужно реализовать некую БД, которая ведет учет данных о пользователях. У пользователя есть: имя, фамилия, возраст, номера телефонов. При этом у каждого пользователя может быть от одного и больше номеров телефонов (многие номера телефонов).
В этом случае мы наблюдаем следующее: пользователь может иметь многие номера телефонов, но нельзя сказать, что номеру телефона принадлежит определенный пользователь.
Другими словами, телефон принадлежит только одному пользователю. А пользователю могут принадлежать 1 и более телефонов (многие).
Как мы видим, это отношение один ко многим.
5.1. Как построить такие таблицы?
Пользователей будет представлять некая таблица «Person» (id, имя, фамилия, возраст), номера телефонов будет представлять таблица «Phone». Она будет выглядеть так:
Данная таблица представляет три номера телефона. При этом номера телефона с id 1 и 2 принадлежат пользователю с id 5. А вот номер с id 3 принадлежит пользователю с id 17.
Заметка. Если бы у таблицы «Phones» было бы больше атрибутов, то мы смело бы их добавляли в эту таблицу.
5.2. Почему мы не делаем тут таблицу-посредника?
Таблица-посредник нужна только в том случае, если мы имеем связь многие-ко-многим. По той простой причине, что мы можем рассматривать ее с двух сторон. Как, например, таблицу EmployeesPositions ранее:
- Каждому работнику принадлежат несколько должностей (многие).
- Каждой должности принадлежит несколько работников (многие).
Но в нашем случае мы не можем сказать, что каждому телефону принадлежат несколько пользователей — номеру телефона может принадлежать только один пользователь.
Теперь прочтите еще раз заметку в конце пункта 5.1. — она станет для вас более понятной.
5.3. Реализация
Диаграмма

Код на T-SQL
create table dbo.Person ( PersonId int primary key, FirstName nvarchar(64) not null, LastName nvarchar(64) not null, PersonAge int not null ) insert into dbo.Person(PersonId, FirstName, LastName, PersonAge) values (5, N'John', N'Doe', 25) insert into dbo.Person(PersonId, FirstName, LastName, PersonAge) values (17, N'Izabella', N'MacMillan', 19) create table dbo.Phone ( PhoneId int primary key, PersonId int foreign key references dbo.Person(PersonId), PhoneNumber varchar(64) not null ) insert into dbo.Phone(PhoneId, PersonId, PhoneNumber) values (1, 5, '11 091-10') insert into dbo.Phone(PhoneId, PersonId, PhoneNumber) values (2, 5, '19 124-66') insert into dbo.Phone(PhoneId, PersonId, PhoneNumber) values (3, 17, '21 972-02')
Объяснения
Наша таблица Phone хранит всего один внешний ключ. Он ссылается на некого пользователя (на строку из таблицы Person). Таким образом, мы как бы говорим: «этот пользователь является владельцем данного телефона». Другими словами, телефон знает id своего владельца.
6. Один к одному
Представим, что на работе вам дали задание написать БД для учета всех работников для HR. Начальник уверял, что компании нужно знать только об имени, возрасте и телефоне работника. Вы разработали такую БД и поместили в нее всю 1000 работников компании. И тут начальник говорит, что им зачем-то нужно знать о том, является ли работник инвалидом или нет. Наиболее простое, что приходит в голову — это добавить новый столбец типа bool в вашу таблицу. Но это слишком долго вписывать 1000 значений и ведь true вы будете вписывать намного реже, чем false (2% будут true, например).
Более простым решением будет создать новую таблицу, назовем ее «DisabledEmployee». Она будет выглядеть так:
Выполнив это мы получили связь один к одному.
Заметка. Обратите внимание на то, что мы могли также наложить на атрибут EmloyeeId ограничение primary key. Оно отличается от ограничения unique лишь тем, что не может принимать значения null.
6.1. Вывод
Можно сказать, что отношение один к одному — это разделение одной и той же таблицы на две.
6.2. Реализация
Диаграмма

Код на T-SQL
create table dbo.Employee ( EmployeeId int primary key, EmployeeName nvarchar(128) not null, EmployeeAge int not null ) insert into dbo.Employee(EmployeeId, EmployeeName, EmployeeAge) values (159, N'John Smith', 22) insert into dbo.Employee(EmployeeId, EmployeeName, EmployeeAge) values (722, N'Hilary White', 29) insert into dbo.Employee(EmployeeId, EmployeeName, EmployeeAge) values (937, N'Emily Brown', 19) insert into dbo.Employee(EmployeeId, EmployeeName, EmployeeAge) values (100, N'Frederic Miller', 16) insert into dbo.Employee(EmployeeId, EmployeeName, EmployeeAge) values (99, N'Henry Lorens', 20) insert into dbo.Employee(EmployeeId, EmployeeName, EmployeeAge) values (189, N'Bob Red', 25) create table dbo.DisabledEmployee ( DisabledPersonId int primary key, EmployeeId int unique foreign key references dbo.Employee(EmployeeId) ) insert into dbo.DisabledEmployee(DisabledPersonId, EmployeeId) values (1, 159) insert into dbo.DisabledEmployee(DisabledPersonId, EmployeeId) values (2, 722) insert into dbo.DisabledEmployee(DisabledPersonId, EmployeeId) values (3, 937)
Объяснения
Таблица DisabledEmployee имеет атрибут EmployeeId, что является внешним ключом. Он ссылается на атрибут EmployeeId таблицы Employee. Кроме того, этот атрибут имеет ограничение unique, что говорит о том, что в него могут быть записаны только уникальные значения. Соответственно, работник может быть записан в эту таблицу не более одного раза.
7. Обязательные и необязательные связи
Связи можно поделить на обязательные и необязательные.
7.1. Один ко многим
- Один ко многим с обязательной связью:
К одному полку относятся многие бойцы. Один боец относится только к одному полку. Обратите внимание, что любой солдат обязательно принадлежит к одному полку, а полк не может существовать без солдат. - Один ко многим с необязательной связью:
На планете Земля живут все люди. Каждый человек живет только на Земле. При этом планета может существовать и без человечества. Соответственно, нахождение нас на Земле не является обязательным
Одну и ту же связь можно рассматривать как обязательную и как необязательную. Рассмотрим вот такой пример:
У одной биологической матери может быть много детей. У ребенка есть только одна биологическая мать.А) У женщины необязательно есть свои дети. Соответственно, связь необязательна.
Б) У ребенка обязательно есть только одна биологическая мать – в таком случае, связь обязательна.
7.2. Один к одному
- Один к одному с обязательной связью:
У одного гражданина определенной страны обязательно есть только один паспорт этой страны. У одного паспорта есть только один владелец. - Один к одному с необязательной связью:
У одной страны может быть только одна конституция. Одна конституция принадлежит только одной стране. Но конституция не является обязательной. У страны она может быть, а может и не быть, как, например, у Израиля и Великобритании.
Одну и ту же связь можно рассматривать как обязательную и как необязательную:
У одного человека может быть только один загранпаспорт. У одного загранпаспорта есть только один владелец.А) Наличие загранпаспорта необязательно – его может и не быть у гражданина. Это необязательная связь.
Б) У загранпаспорта обязательно есть только один владелец. В этом случае, это уже обязательная связь.
7.3. Многие ко многим
Любая связь многие ко многим является необязательной. Например:
Человек может инвестировать в акции разных компаний (многих). Инвесторами какой-то компании являются определенные люди (многие).А) Человек может вообще не инвестировать свои деньги в акции.
Б) Акции компании мог никто не купить.
8. Как читать диаграммы?
Выше я приводил диаграммы созданных нами таблиц. Но для того, чтобы их понимать, нужно знать, как их «читать». Разберемся в этом на примере диаграммы из пункта 5.3.
Мы видим отношение один ко многим. Одной персоне принадлежит много телефонов.
- Возле таблицы Person находится золотой ключик. Он обозначает слово «один».
- Возле таблицы Phone находится знак бесконечности. Он обозначает слово «многие».
9. Итоги
- Связи бывают:
- Многие ко многим.
- Один ко многим.
1) с обязательной связью;
2) с необязательной связью. - Один к одному.
1) с обязательной связью;
2) с необязательной связью.
- Связи организовываются с помощью внешних ключей.
- Foreign key (внешний ключ) — это атрибут или набор атрибутов, которые ссылаются на primary key или unique другой таблицы. Другими словами, это что-то вроде указателя на строку другой таблицы.
10. Задачи
Для лучшего усвоения материала предлагаю вам решить следующие задачи:
- Описать таблицу фильм: id, название, длительность, режиссер, жанр фильма. Обратите внимание на то, что у фильма может быть более одного жанра, а к одному жанру может относится более, чем один фильм.
- Описать таблицу песня: id, название, длительность, певец. При этом у песни может быть более одного певца, а певец мог записать более одной песни.
- Реализовать таблицу машина: модель, производитель, цвет, цена
- Описать отдельную таблицу производитель: id, название, рейтинг.
- Описать отдельную таблицу цвета: id, название.
У одной машины может быть только один производитель, а у производителя — много машин. У одной машины может быть много цветов, а у одного цвета может быть много машин. - Добавить в БД из пункта 6.2. таблицу военно-обязанных по типу того, как мы описали отдельную таблицу DisabledEmployee.
SQL Developer
(применимо, только если вы добавили поддержку CVS.)
Эта информация относится к созданию или редактированию соединения CVS (Concurrent Versions System).
Подключение
Access Method: метод, с помощью которого клиент получает доступ к серверу и аутентифицируется на нем. Доступные методы зависят от того, какие настройки CVS вы установили; доступные методы могут включать внешний, сервер паролей, безопасную оболочку через SSh3 и [Другое].
Большинство оставшихся полей подключения применяются только к определенным значениям метода доступа.
Имя пользователя: имя пользователя CVS, известное репозиторию.
Имя хоста: Полное имя хоста или IP-адрес системы сервера CVS.
Порт: номер порта TCP / IP, который прослушивает репозиторий.
Путь к репозиторию: расположение программного обеспечения репозитория CVS.Заполненный / можно заменить путем в формате, подходящем для вашей операционной системы, например c: \ cvs. Простая ошибка форматирования, такая как косая черта вместо обратной, приведет к появлению сообщения с просьбой ввести допустимый путь к репозиторию.
Ключ SSh3: путь и имя файла закрытого ключа SSh3 для этого подключения. Вы можете сгенерировать файл закрытого ключа SSh3, используя команду "Создать пару ключей SSh3".
Создать пару ключей SSh3: отображает диалоговое окно для создания пары ключей SSh3 (то есть файла закрытого ключа и файла открытого ключа).Вы указываете файл закрытого ключа в поле SSh3 Key. Вы добавляете сведения о файле открытого ключа в список открытых ключей в системе сервера CVS.
Use HTTP Proxy Settings: Отметьте (включите) эту опцию, если вы находитесь за брандмауэром и вам нужно использовать HTTP для доступа к серверу CVS.
Конфигурация внешнего локатора: отображает диалоговое окно «Конфигурация внешнего локатора», в котором вы можете редактировать детали клиента удаленной оболочки и программы удаленного сервера.
Корень
Значение CVSROOT: корневая переменная CVS, созданная на основе информации, которую вы уже предоставили. Эта переменная предоставляет клиенту сведения о доступе при обращении к серверу. Формат исходной переменной:: accessmethod: username @ serverlocation: repositorypath
Обычно это значение изменять не требуется. Один из случаев, когда вы могли бы изменить это значение, - это когда вы пытаетесь подключиться к серверу CVSNT через брандмауэр.В этом случае вы должны добавить информацию о прокси в начало части имени пользователя, чтобы корневая переменная CVS приняла следующую форму:: accessmethod: proxy = proxyname; proxyport = portnumber: username @ serverlocation: repositorypath
Подключение
Тестовое соединение: пытается установить соединение с репозиторием CVS.
Статус: отображает результат теста (успех или сообщение об ошибке).
Имя
Имя соединения: Имя для идентификации соединения с репозиторием CVS. Имя по умолчанию совпадает со значением CVSROOT.
Сводка
Отображает указанную вами информацию о подключении. Чтобы внести какие-либо исправления, нажмите «Назад» при необходимости и измените информацию. Чтобы создать соединение, нажмите Готово.
.элементов базы данных; Таблицы, записи и поля
Таблицы, Записи и поля
Таблицы
Таблица базы данных состоит из записей и полей, содержащих данные. Таблицы еще называют таблицы данных. Каждая таблица в базе данных содержит данные о разных, но связанный, предмет.
Рисунок 2 Таблица базы данных
Записи
Данные хранятся в записи.Запись состоит из полей и содержит все данные о одно конкретное лицо, компания или элемент в базе данных. В этой базе данных запись содержит данные для одного отчета об инциденте службы поддержки клиентов. Записи отображаются в виде строк в таблице базы данных. Выделена запись для идентификатора журнала 1201242. на рисунке 3.
Рисунок 3 Появляются записи как строки в таблице базы данных.
Поля
Поле является частью запись и содержит отдельные данные для объекта записи.В таблице базы данных, показанной на рисунке 4, каждая запись содержит четыре поля:
Журнал ID | А номер, присвоенный этому инциденту службы поддержки клиентов для идентификации цели |
Оператор | г. код оператора службы поддержки клиентов, который занимался этим инцидентом |
Решено | А Установите флажок, чтобы указать, был ли устранен инцидент |
Продолжительность | г. время в секундах, затраченное оператором на это происшествие |
Поля отображаются как столбцы в таблице базы данных.Данные из поля Log ID для пяти записей выделено на рисунке 4.
Рисунок 4 Появятся поля как столбцы в таблице базы данных.
Как подключиться к SQL Server (пример)
- Home
-
Testing
-
- Back
- Agile Testing
- BugZilla
- Cucumber
- Database Testing
- JTL Testing
- Назад
- JUnit
- LoadRunner
- Ручное тестирование
- Мобильное тестирование
- Mantis
- Почтальон
- QTP
- Назад
- Центр качества (ALM3000)
-
- Управление тестированием
- TestLink
SAP
-
- Назад
- ABAP
- APO
- Начинающий
- Basis
- BODS
- BI
- BPC
- CO
- Назад
- CRM
- Crystal Reports
- FICO
- 000 HRM
- 000 HRM
- MM Pay
- Назад
- PI / PO
- PP
- SD
- SAPUI5
- Безопасность
- Менеджер решений
- Successfactors
- SAP Tutorials
- Назад
- Java
- JSP
- Kotlin
- Linux
- Linux
- Kotlin
- Linux js
- Perl
- Назад
- PHP
- PL / SQL
- PostgreSQL
- Python
- ReactJS
- Ruby & Rails
- Scala
- SQL 000
- SQL 000 0003 SQL 000 0003 SQL 000
- UML
- VB.Net
- VBScript
- Веб-службы
- WPF
Обязательно учите!
-
- Назад
- Бухгалтерский учет
- Алгоритмы
- Android
- Блокчейн
- Business Analyst
- Создание веб-сайта
- CCNA
- Облачные вычисления
- 00030003 COBOL 9000 Compiler
- 9000 Встроенные системы
- 00030002 9000 Compiler 9000
- Ethical Hacking
- Учебники по Excel
- Программирование на Go
- IoT
- ITIL
- Jenkins
- MIS
- Сеть
- Операционная система
- Назад
- Управление проектами Обзоры
- Salesforce
- SEO
- Разработка программного обеспечения
- VB A
-
Big Data
-
- Назад
- AWS
- BigData
- Cassandra
- Cognos
- Хранилище данных 00030003
- HBOps 0003
- HBOps 0003
- MicroStrategy
- MongoDB
-
Как создать и настроить связанный сервер для подключения к MySQL в SQL Server Management Studio
Эта статья проведет вас со всеми необходимыми шагами для успешного создания связанного сервера в SSMS для подключения к базе данных MySQL.
Эта статья разделена на три раздела:
- Установка драйвера ODBC для MySQL
- Настройте драйвер ODBC для подключения к базе данных MySQL
- Создание и настройка связанного сервера с помощью драйвера ODBC
Установка драйвера ODBC для MySQL
ODBC расшифровывается как Open Database Connectivity (Connector).Он разработан Microsoft в 1990-х годах. Как правило, это API (интерфейс прикладного программирования) для доступа к системам баз данных.
Для ОС, отличной от Windows, используется JDBC (Java Database Connectivity).
Перед установкой драйвера ODBC для MySQL в Windows убедитесь, что компоненты доступа к данным Microsoft (MDAC) обновлены, а распространяемый пакет Microsoft Visual C ++ 2013 установлен в вашей системе.
По этой ссылке можно загрузить и установить драйверы MySQL ODBC для Windows.Есть две версии драйверов MySQL ODBC для Windows, которые могут быть установлены, в зависимости от того, с каким приложением будет использоваться:
- mysql-connector-odbc-8.0.17-win32.msi для 32-разрядного приложения
- mysql-connector-odbc-8.0.17-winx64.msi для 64-битного приложения
Установка драйвера MySQL ODBC для Windows проста. Дважды щелкните загруженный файл, появится диалоговое окно Добро пожаловать, :
После нажатия кнопки Next появится диалоговое окно License Agreement .Если вы согласны с лицензионным соглашением, нажмите кнопку Я принимаю условия лицензионного соглашения и нажмите кнопку Далее :
В диалоговом окне Setup Type выберите радио-кнопку Typical и нажмите кнопку Next :
Диалоговое окно Готово к установке программы показывает, что и где будет установлено. Нажмите кнопку Install , чтобы установить драйвер ODBC:
Через пару секунд установка драйвера ODBC для MySQL будет завершена :
Чтобы убедиться, что драйвер ODBC для MySQL установлен на компьютере, можно проверить в Панели управления:
Другой способ проверить - через диалоговое окно администратора источника данных ODBC:
На вкладке Драйверы диалогового окна Администратор источника данных ODBC проверьте, существуют ли драйверы ODBC для MySQL:
Настроить драйвер ODBC для подключения к базе данных MySQL
Чтобы подключиться к базе данных MySQL с помощью драйверов ODBC, в диалоговом окне Администратор источника данных ODBC на вкладке Системный DSN нажмите кнопку Добавить :
В диалоговом окне Create New Data Source выберите MySQL ODBC Driver и нажмите кнопку Finish :
В диалоговом окне MySQL Connector / ODBC Data Source Configuration :
В текстовом поле Data Source Name введите имя источника данных по выбору.В текстовом поле Описание введите описание источника данных, если необходимо.
Используйте метод подключения TCP / IP Server или Named Pipe для подключения к MySQL, выбрав соответствующий переключатель.
В этом примере выбран радиокнопка TCP / IP Server . В текстовом поле введите имя хоста или IP-адрес сервера MySQL. По умолчанию имя хоста localhost , а IP-адрес 127.0.0.1 .В поле Порт введите порт TCP / IP, на котором указан сервер MySQL. По умолчанию это порт 3306 .
В поле User введите имя пользователя, необходимое для подключения к базе данных MySQL, а в поле Password введите пароль пользователя. В поле со списком База данных выберите базу данных, для которой хотите установить соединение:
Чтобы проверить, правильно ли он подключен к базе данных MySQL, нажмите кнопку Test .Следующее сообщение появится, если соединение установлено успешно:
Кроме того, имя источника данных будет отображаться на вкладке System DSN диалогового окна ODBC Data Source Administrator :
Создать и настроить связанный сервер с помощью драйвера ODBC
Теперь, когда драйвер ODBC для MySQL установлен и драйвер ODBC для подключения к базе данных MySQL настроен, можно приступить к настройке связанного сервера в SSMS для подключения к MySQL.
Перейдите в SSMS, в обозревателе объектов , в папке Server Objects , щелкните правой кнопкой мыши папку Linked Servers и в меню выберите опцию New Linked Server :
Появится диалоговое окно New Linked Server . Здесь будет введена конфигурация для подключения к серверу MySQL:
В текстовом поле Связанный сервер вкладки Общие введите имя того, как будет вызываться связанный сервер (например,грамм. MYSQL_SERVER).
Выберите переключатель Другой источник данных и из списка Provider выберите Microsoft OLE DB Provider for ODBC Drivers:
В поле Product name введите любое подходящее (допустимое) имя. Для источника данных необходимо ввести имя источника данных ODBC:
На вкладке Security нажмите кнопку Be made using this security context и в полях Remote login и С паролем введите имя пользователя и пароль, которые существуют в экземпляре сервера MySQL, который выбран в качестве источника данных:
На вкладке Server Options установите для полей RPC и RPC Out значение True:
В случае, если для этих двух параметров не установлено значение true, выполните такой код:
EXEC ('ВЫБРАТЬ * ИЗ теста.table1 ') НА MYSQL_SERVER |
Может появиться следующая ошибка:
Msg 7411, уровень 16, состояние 1, строка 1
Сервер MYSQL_SERVER не настроен для RPC.
Подробнее о параметрах вкладок Security и Server Options можно найти на странице Как создать и настроить связанный сервер в SQL Server Management Studio.
После установки всех параметров в диалоговом окне New Linked Server нажмите кнопку OK .Вновь созданный связанный сервер должен появиться в папке Linked Servers :
Перед тем как начать запрос данных из базы данных MySQL, перейдите в папку Providers в папке Linked Server , щелкните правой кнопкой мыши поставщика MSDASQL и в контекстном меню выберите команду Properties :
В диалоговом окне «Параметры поставщика » установите флажки Вложенные запросы , Только нулевой уровень , Разрешить в процессе , Поддерживать оператор «Нравится» :
Например, если флажок Разрешить в процессе не установлен, при выполнении такого кода:
SELECT * FROM OPENQUERY (MYSQL_SERVER, 'SELECT * FROM test.таблица1 ') |
Может появиться следующее сообщение об ошибке:
Msg 7399, уровень 16, состояние 1, строка 1
Поставщик OLE DB «MSDASQL» для связанного сервера «MYSQL_SERVER» сообщил об ошибке. В доступе отказано.
Msg 7350, уровень 16, состояние 2, строка 1
Не удалось получить информацию о столбце от поставщика OLE DB «MSDASQL» для связанного сервера «MYSQL_SERVER».
Более полезные статьи о связанном сервере можно найти по этим ссылкам:
- Как запрашивать данные Excel с помощью связанных серверов SQL Server
- Как создать и настроить связанный сервер в SQL Server Management Studio
- Как создать, настроить и удалить связанный сервер SQL Server с помощью Transact-SQL
- Как создать связанный сервер с базой данных SQL Azure
- Как настроить связанный сервер с помощью драйвера ODBC
В настоящее время работает в ApexSQL LLC в качестве инженера по продажам программного обеспечения, помогает клиентам с любыми техническими проблемами и обеспечивает контроль качества для бесплатных надстроек ApexSQL Complete, ApexSQL Refactor и ApexSQL Search.
Посмотреть все сообщения Marko Zivkovic
Последние сообщения Marko Zivkovic (посмотреть все) .