click fraud protection
Недавно мне пришлось перенести данные из базы данных Access в SQL Server 2014, потому что моя база данных становилась слишком большой для Access. Несмотря на то, что процесс довольно прост, я решил написать статью с пошаговыми инструкциями.
Во-первых, вам нужно убедиться, что у вас есть SQL Server или SQL Server Express установлен на вашем компьютере. При загрузке SQL Server Express на персональный компьютер убедитесь, что вы загружаете версию с Расширенные услуги. В противном случае ядро базы данных не будет установлено, и у вас будет SQL Management Studio без какого-либо экземпляра базы данных для подключения.
После того, как вы правильно установили SQL Server, вы можете продолжить выполнение следующих шагов, чтобы импортировать базу данных Access в новую базу данных на SQL Server.
Перенести базу данных Access на SQL Server
Откройте SQL Server Management Studio и подключитесь к серверу базы данных, на который вы хотите импортировать базу данных Access. Под Базы данных, щелкните правой кнопкой мыши и выберите
Новая база данных. Если у вас уже есть база данных и вы просто хотите импортировать пару таблиц из Access, просто пропустите это и перейдите к Импортировать данные шаг ниже. Просто щелкните правой кнопкой мыши текущую базу данных вместо создания новой.

Если вы создаете новую базу данных, дайте ей имя и настройте параметры, если вы хотите изменить их по умолчанию.

Теперь нам нужно щелкнуть правой кнопкой мыши только что созданную тестовую базу данных и выбрать Задания а потом Импортировать данные.

На Выберите источник данных диалоговое окно выберите Microsoft Access (ядро базы данных Microsoft Jet) из раскрывающегося списка.

Следующий за Имя файлаe, нажмите на Просматривать и перейдите к базе данных Access, которую вы хотите импортировать, и нажмите Открыть. Обратите внимание, что база данных не может быть в формате Access 2007 или выше (ACCDB), поскольку SQL Server его не распознает! Поэтому, если у вас есть база данных Access с 2007 по 2016 год, сначала преобразуйте ее в 2002-2003 База данных формат (MDB) перейдя в Файл — Сохранить как.
Идите и нажмите Следующий выбрать пункт назначения. Поскольку вы щелкнули правой кнопкой мыши базу данных, в которую хотели импортировать данные, она уже должна быть выбрана в списке. Если нет, выберите Собственный клиент SQL из Пункт назначения падать. Вы должны увидеть экземпляр базы данных под Имя сервера а затем сможете выбрать конкретную базу данных внизу, как только вы выберете свой метод аутентификации.

Нажмите Следующий а затем укажите, как вы хотите перенести данные из Access в SQL, выбрав либо Скопируйте данные из одной или нескольких таблиц или Напишите запрос, чтобы указать данные для передачи.

Если вы хотите скопировать все таблицы или только некоторые из таблиц из базы данных Access без каких-либо манипуляций с данными, выберите первый вариант. Если вам нужно скопировать только определенные строки и столбцы данных из таблицы, выберите второй вариант и напишите SQL-запрос.
По умолчанию должны быть выбраны все таблицы, и если вы нажмете кнопку РедактироватьСопоставления кнопку, вы можете настроить отображение полей между двумя таблицами. Если вы создали новую базу данных для импорта, это будет точная копия.

Здесь у меня в базе данных Access только одна таблица. Нажмите «Далее», и вы увидите Запустить пакет экран где Беги немедленно следует проверить.

Нажмите Следующий а затем щелкните Заканчивать. Затем вы увидите, как происходит передача данных. После его завершения вы увидите количество строк, переданных для каждой таблицы в Сообщение столбец.

Нажмите Закрывать и вы сделали. Теперь вы можете продолжить и запустить SELECT для своих таблиц, чтобы убедиться, что все данные были импортированы. Теперь вы можете использовать возможности SQL Server для управления своей базой данных.

Возникли проблемы с импортом данных из Access в SQL Server? Если да, оставьте комментарий, и я постараюсь помочь. Наслаждаться!
Создаём связь Access с таблицами на SQL Server
Запускаем программу Access и создаём базу данных. Далее для подключения к таблицам sql сервера переходим в меню Файл — Внешние данные — связь с таблицами.

В открывшемся окне выбираем тип файлов — Базы данных ODBC

Далее переходим на вкладку Файловый источник данных, выбираем ранее созданное подключение в пример test жмем OK.

Далее в открывшемся окне выбираем таблицы


Подключение готово, теперь используя подключенные таблицы, формируем клиентское приложение. Чтобы на компьютере пользователя не устанавливать Microsoft Office, можно установить утилиту Access Runtime.
Межсерверный перенос данных. Перенос данных между серверами с помощью специализированных утилит
Для переноса данных больших размеров с сервера, например с MS SQL на MYSQL или в другой формат в графическом режиме можно использовать специализированные утилиты.
Некоторые из них:
Navicat — Для полноценной работы необходима лицензия.
DBSync for MsSQL & MySQL — Для полноценной работы необходима лицензия.
SypexDumper — работа с web страниц. Свободна распространяемая. Для работы в ней необходим web сервер.
phpMyAdmin — работа с web страниц. Для работы в ней необходим web сервер. Для переноса больших размеров данных необходимо настроить конфигурацию минимальный размер 10.240 kb.
MySQL-Front — русскоязычный интерфейс для полноценной работы необходима лицензия. Для переноса данных используется экспорт, и импорт данных предварительно создаётся база данных, в которую после переносятся таблицы.
Подробней остановимся на утилите MySQL Migration Toolkit. Переносит данные более корректно и быстро, нет проблем с переносом ключей, индексов, нет необходимости устанавливать ODBC драйвера. Дистрибутив входит в состав mysql gui tools. Если возникают проблемы с подключением к MS SQL, утилита должна быть установлена на этом же ПК, это связано с безопасностью SQL сервера. Также необходимо чтобы бала установлена Java иначе не будет работать. Утилита сама создаёт базу данных, но к названию добавляет dbo. Для переименования базы данных можно воспользоваться MySQL Administrator, она также входит в состав mysql gui tools, создав дамп, а затем восстановив его в базе с подходящим названием. Основы администрирования MYSQL.
Как в MS Access 2016 преобразовать базу данных в SQL Server базу?
Где в Access 16 находится мастер преобразования базы в MS SQL Server?
- Вопрос задан более двух лет назад
- 179 просмотров
5 комментариев
Простой 5 комментариев

А он вообще есть?
Waniman @Waniman Автор вопроса
Василий Банников, Сервер? Есть

Waniman, мастер преобразования базы.
Waniman @Waniman Автор вопроса
Василий Банников, А как тогда преобразовать, если его нет?

Waniman, хз. Первое что мне в голову пришло — через дополнительный инструмент. Но вроде есть.
Решения вопроса 1

Токсичный шарпист
Ответ написан более двух лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- C#
- +2 ещё
Возможно ли получить tcp-сокет в C#-приложении? Или как узнать IP?
- 1 подписчик
- 17 нояб.
- 84 просмотра

- SQL Server
- +1 ещё
Почему проект не открывается на других ПК?
- 1 подписчик
- 29 окт.
- 100 просмотров

- SQL Server
Где ошибка в запросе?
- 1 подписчик
- 14 окт.
- 39 просмотров

- SQL Server
Как устранить ошибку при установки?
- 1 подписчик
- 13 окт.
- 36 просмотров

- SQL Server
- +1 ещё
Как настроить отправку писем?
- 3 подписчика
- 13 окт.
- 168 просмотров

- SQL Server
- +1 ещё
Не могу понять ошибку бекапа?
- 1 подписчик
- 12 окт.
- 81 просмотр

- SQL Server
- +1 ещё
Как восстановить базу данных?
- 2 подписчика
- 11 окт.
- 245 просмотров

- SQL Server
Можно ли использовать pivot в xml файле?
- 1 подписчик
- 28 сент.
- 41 просмотр

- SQL Server
Как сделать триггер на удаление строчки?
- 1 подписчик
- 26 сент.
- 64 просмотра

- SQL Server
Почему не получается создать отношения между таблицами?
- 1 подписчик
- 12 сент.
- 103 просмотра
от 25 000 до 40 000 ₽
Bell Integrator • Санкт-Петербург
До 200 000 ₽
от 10 000 до 40 000 ₽
20 нояб. 2023, в 09:22
50000 руб./за проект
20 нояб. 2023, в 07:54
13000 руб./за проект
20 нояб. 2023, в 07:06
20000 руб./за проект
Минуточку внимания
Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями
- Как перенести описание вниз?
- 2 подписчика
- 0 ответов
- 2 подписчика
- 0 ответов
- 3 подписчика
- 2 ответа
- 2 подписчика
- 1 ответ
- 2 подписчика
- 2 ответа
- 2 подписчика
- 2 ответа
- 2 подписчика
- 4 ответа
- 2 подписчика
- 1 ответ
- 2 подписчика
- 2 ответа
- 2 подписчика
- 1 ответ
Скопировать таблицу из Access в MS SQL через C#
Есть Access база и нужно взять и перенести ее целиком с данными в MS SQL. Можно конечно, копировать по строчно через DataReader одиночными вставками, но это медленно. В память я так же не хочу целиком грузить DataTable из Access. Как это сделать максимально быстро?
Отслеживать
задан 29 сен 2016 в 14:13
24.8k 12 12 золотых знаков 64 64 серебряных знака 160 160 бронзовых знаков
» но это медленно» — вы храните в Access столь большие таблицы, что так важна скорость?
29 сен 2016 в 14:16какой размер таблицы? сколько Гб? Если помещается в память, то очень быстро можно перегнать через DataTable с помощью BulkCopy. Займет от 7 сек до 5 мин на все, в зависимости от объема данных и загруженности целевой БД. На крайний случай импорт данных в файл и BULK INSERT, который этот файл импортирует напрямую в БД. Это можно сделать вообще без шарпа. Формат файла данных смотри в описании команды BULK INSERT
29 сен 2016 в 18:55
@rdom, по идее, BulkCopy подойдет. Одна из перегрузок WriteToServer принимает на вход DataReader источника. Он все равно сливает все данные из источника в память(DataTable) или напрямую загружает на сервер сохраняя высокую скорость?
29 сен 2016 в 21:36
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Если нужно просто перекачать данные, и нужно делать это именно через C#, то прибегать к использованию DataTable необязательно.
Потоковая загрузка данных в SqlServer делается с помощью SqlBulkCopy , потоковое чтение из Access — с помощью OleDbDataReader .
SqlBulkCopy может принимать на вход не только DataRow[] и DataTable , но также DbDataReader и IDataReader . Т.к. OleDbDataReader является и тем и другим, то достаточно просто подать OleDbDataReader на вход метода WriteToServer(. ) экземпляра SqlBulkCopy :
SqlConnection sqlConnection = . ; OleDbConnection oledbConnection = . ; using (var oledbCmd = new OleDbCommand(@" select Column1, Column2, . from Table_Name", oledbConnection)) using (var oledbReader = oledbCmd.ExecuteReader()) using (var bulkCopy = new SqlBulkCopy(sqlConnection))
Целевая таблица перед этим, естественно, должна быть создана.
Другой вариант — обойтись без C#, средствами сугубо SqlServer-а. Для этого потребуется установить драйвер СУБД Access там же, где установлен инстанс SqlServer и настроить его использование.
Затем с помощью конструкции OPENROWSET можно обратиться к файлу БД Access и заимпортировать данные из выбранной таблицы командой SELECT . INTO (или INSERT INTO . SELECT , если целевая таблица уже создана):
SELECT t.Column1, t.Column2, . INTO dbo.TableName FROM OPENROWSET( 'Microsoft.ACE.OLEDB.12.0', 'N:\AccessDbFiles\MsAccessDatabaseFile.accdb'; 'admin';'', [Table_Name]) AS tЛибо через linked-server. Подсоединяем Access-базу:
EXEC sp_addlinkedserver @server = 'AccessDbName', -- алиас @srvproduct = 'Access', @provider = 'Microsoft.ACE.OLEDB.12.0', @datasrc = 'N:\AccessDbFiles\MsAccessDatabaseFile.accdb'затем перекачиваем данные в нужную таблицу:
SELECT t.Column1, t.Column2, . INTO dbo.TableName FROM [AccessDbName]. [Table_Name] AS tТри точки в [AccessDbName]. [AccessDb_Table_Name] — это так и должно быть (four-part naming, где не указаны каталог и схема).
Обратите внимание, что в данном случае путь к файлу БД Access ( N:\AccessDbFiles\MsAccessDatabaseFile.accdb в примерах) — это путь в координатах инстанса SqlServer (путь может быть сетевым), а не в координатах того хоста, с которого к нему подключаются.
