Преминаване към основното съдържание
Мигриране на база данни на Access в SQL Server

Мигриране на база данни на Access в SQL Server

Ние всички имаме ограничения и базата данни на Access не прави изключение. Например базата данни на Access има ограничен размер от 2 ГБ и не може да поддържа повече от 255 едновременни потребители. Така че когато е време вашата база данни на Access да премине към следващото ниво, можете да мигрирате към SQL Server. SQL Server (независимо дали локално или в облака на Azure) поддържа по-големи количества данни, повече едновременни потребители и разполага с по-голям капацитет от ядрото на базата данни JET/ACE. Това ръководство ви дава плавен старт за вашето пътуване на SQL Server, помага да се запазят решенията за клиентския достъп, които сте създали, и се надяваме да ви мотивира да използвате Access за бъдещи решения за бази данни. Съветникът за мигриране е премахнат от Access в 2013 на Access, така че вече можете да използвате помощника за миграция на Microsoft SQL Server (SSMA). За успешно мигриране изпълнете следните стъпки:

Фазите на мигриране на бази данни към SQL Server

Преди да започнете

Следващите раздели предоставят фон и друга информация, която да ви помогне да направите първите стъпки.

За разделяните бази данни

Всички обекти на бази данни на Access могат да бъдат в един файл на база данни или могат да бъдат съхранявани в два файла на база данни: клиентска база данни и сървърна база данни. Това се нарича разделяне на базата данни и е предназначено да улесни споделянето в мрежова среда. Файлът на сървърната база данни трябва да съдържа само таблици и релации. Клиентският файл трябва да съдържа само всички други обекти, включително формуляри, отчети, заявки, макроси, VBA модули и свързани таблици към сървърната база данни. Когато мигрирате база данни на Access, тя е подобна на разделена база данни в този SQL Server действа като нова задна част за данните, които вече се намират на сървър.

Като резултат, все още можете да поддържате клиентския достъп до базата данни със свързани таблици към таблиците на SQL Server. Ефективно можете да извличате ползи от бързото разработване на приложения, което предоставя база данни на Access, както и скалируемост на SQL Server.

Ползи от SQL Server

Все още се нуждаете от някои убедителни, за да мигрирате към SQL Server? Ето някои допълнителни предимства, за които да помислите:

  • Още едновременни потребители    SQL Server може да обработи много повече едновременни потребители от Access и минимизира изискванията за памет, когато се добавят повече потребители.

  • Повишена достъпност    Чрез SQL Server можете динамично да архивирате или постъпково или да завършите базата данни, докато се използва. Следователно няма нужда да искате от потребителите да излизат от базата данни, за да архивирате данните.

  • Висока производителност и мащабируемост    Базата данни на SQL Server обикновено се изпълнява по-добре от база данни на Access, особено с голям размер на базата данни терабайт. Освен това SQL Server обработва заявките много по-бързо и по-ефективно, като едновременно обработват заявките, като използват няколко основни нишки в един процес, за да обработват потребителски искания.

  • Подобрена защита    Чрез надеждно свързване SQL Server интегрира чрез системата за защита на Windows, за да осигури единен интегриран достъп до мрежата и базата данни, като използва най-доброто от двете системи за защита. Това улеснява администрирането на сложни схеми за защита. SQL Server е идеалното място за съхранение на поверителна информация, като например номера за социални осигуровки, данни от кредитни карти и адреси, които са поверителни.

  • Незабавно възстановяване    Ако операционната система се срине или токът изтече, SQL Server може автоматично да възстанови базата данни в съобразени състояния за минути и без намесата на администратора на базата данни.

  • Използване на VPN    Access и виртуални частни мрежи (VPN) не се разбирайте. Но с SQL Server отдалечените потребители могат да използват все още използването на базата данни на Access в настолната версия и SQL Server, който се намира зад защитната стена на VPN.

  • SQL сървър на Azure    В допълнение към ползите от SQL Server предлага динамична скалируемост без прекъсване, интелигентно оптимизиране, глобална скалируемост и достъпност, премахване на хардуерните разходи и намалено администриране.

Изберете опцията Best Azure SQL Server

Ако мигрирате към Azure SQL Server, има три опции, от които можете да избирате, всеки от които с различна полза:

  • Единична база данни/еластични басейни    Тази опция има свой собствен набор от ресурси, управлявани чрез сървър за SQL база данни. Една единична база данни е подобна на база данни в SQL Server. Можете също да добавите еластичен пул, който представлява колекция от бази данни със споделен набор от ресурси, управлявани чрез сървъра за SQL база данни. Най-често използваните функции на SQL Server са налични с вградени резервни копия, кръпка и възстановяване. Но няма гарантирано точно време на поддръжка и мигриране от SQL Server може да е трудно.

  • Управляван екземпляр    Тази опция е колекция от системни и потребителски бази данни със споделен набор от ресурси. Управляваният екземпляр е като екземпляр на базата данни на SQL Server, която е висока съвместимост с локалния SQL Server. Управляваното копие има вградени архивирания, кръпка, възстановяване и е лесно за мигриране от SQL Server. Има обаче малък брой функции на SQL Server, които не са налични и не са гарантирани точно време на поддръжка.

  • Виртуална машина на Azure    Тази опция ви позволява да изпълнявате SQL Server във виртуална машина в Azure Cloud. Имате пълен контрол върху двигателя на SQL Server и лесен път за мигриране. Но трябва да управлявате вашите архиви, кръпки и възстановяване.

За повече информация вижте избор на пътя за мигриране на бази данни в Azure и Изберете опцията правилния SQL Server в Azure.

Първи стъпки

Има няколко проблема, които можете да адресирате отпред, които могат да ви помогнат да опростите процеса на мигриране, преди да изпълните SSMA:

  • Добавяне на индекси на таблица и първични ключове    Уверете се, че всяка таблица на Access има индекс и първичен ключ. SQL Server изисква всички таблици да имат поне един индекс и изисква свързана таблица да има първичен ключ, ако таблицата може да бъде актуализирана.

  • Проверете взаимовръзките между основните/външните ключове    Уверете се, че тези релации са базирани на полета с постоянни типове данни и размери. SQL Server не поддържа Съединени колони с различни типове данни и размери във външните ключови ограничения.

  • Премахване на колоната за прикачени файлове    SSMA не мигрира таблици, които съдържат колоната за прикачени файлове.

Преди да стартирате SSMA, направете следните първи стъпки.

  1. Затворете базата данни на Access.

  2. Уверете се, че настоящите потребители, свързани с базата данни, също затварят базата данни.

  3. Ако базата данни е във файлов формат. MDB, премахнете защитата на ниво потребител.

  4. Архивиране на вашата база данни. За повече информация вижте защита на вашите данни чрез процеси за архивиране и възстановяване.

Съвет    Обмислете инсталирането на Microsoft SQL Server Express Edition на вашия компютър, който поддържа до 10 ГБ и е безплатен и лесен начин за изпълнение и проверка на вашата миграция. Когато се свързвате, използвайте LocalDB като инстанция на базата данни.

Съвет    Ако е възможно, използвайте самостоятелна версия на Access. Ако можете да използвате само Office 365, използвайте двигателя на базата данни на Access 2010, за да мигрирате вашата база данни на Access, когато използвате SSMA. За повече информация вижте 2010 за разпространение на ядрото на базата данни на Microsoft Access.

Изпълнение на SSMA

Microsoft предоставя помощник за мигриране на Microsoft SQL Server (SSMA), за да улесни миграцията. SSMA основно мигрира таблици и изберете заявки без параметри. Формулярите, отчетите, макросите и модулите на VBA не се конвертират. В SQL Server metadata Explorer показва вашите обекти на база данни на Access и обекти на SQL Server, което ви позволява да преглеждате текущото съдържание и на двете бази данни. Тези две връзки се записват във файла за мигриране, ако решите да прехвърлите допълнителни обекти в бъдеще.

Забележка    Процесът на мигриране може да отнеме известно време в зависимост от размера на обектите на вашата база данни и количеството данни, които трябва да бъдат прехвърлени.

  1. За да мигрирате база данни с помощта на SSMA, първо Изтеглете и инсталирайте софтуера, като щракнете двукратно върху изтегления файл на MSI. Уверете се, че сте инсталирали подходящата версия на 32 или 64 на вашия компютър.

  2. След като инсталирате SSMA, отворете го на компютъра си, за предпочитане от компютъра с файла на базата данни на Access.

    Можете също да го отворите на машина, която има достъп до базата данни на Access от мрежата в споделена папка.

  3. Следвайте инструкциите за начало в SSMA, за да предоставите основна информация, като например местоположението на SQL Server, базата данни на Access и обектите за мигриране, информация за връзка и дали искате да създадете свързани таблици.

  4. Ако мигрирате към SQL Server 2016 или по-нова версия и искате да актуализирате свързана таблица, добавете колона на ROWVERSION, като изберете инструменти за преглед > на настройките на проекта > Общи.

    Полето ROWVERSION ви помага да избегнете конфликти при запис. Access използва това поле ROWVERSION в свързана таблица на SQL Server, за да определи кога записът е бил последно актуализиран. Освен това, ако добавите полето ROWVERSION към заявка, Access го използва за повторно избиране на реда след операцията за актуализиране. Това ще подобри ефективността, като помогне за избягване на грешки при запис и записване на сценарии за изтриване, които могат да се случат, когато Access открие различни резултати от първоначалното представяне, като например може да се появят с типове данни с плаваща запетая и превключватели, които променят колони. Избягвайте да използвате полето ROWVERSION във формуляри, отчети или VBA код. За повече информация вижте ROWVERSION.

    Забележка    Избягвайте да обърквате ROWVERSION с времеви отпечатъци. Макар че времевият отпечатък на ключовата дума е синоним за ROWVERSION в SQL Server, не можете да използвате ROWVERSION като начин за клеймо на въвеждане на данни.

  5. За да зададете точни типове данни, изберете инструменти за преглед > на настройките > тип съпоставяне. Например ако съхранявате само английския текст, можете да използвате VARCHAR вместо nvarchar тип данни.

Конвертиране на обекти

SSMA конвертира обектите на Access в обекти на SQL Server, но не копира обектите незабавно. SSMA предоставя списък на следните обекти за мигриране, така че да можете да решите дали искате да ги преместите в базата данни на SQL Server:

  • Таблици и колони

  • Изберете заявки без параметри.

  • Първични и външни ключове

  • Индекси и стойности по подразбиране

  • Проверяване на ограничения (разрешаване на свойство COLUMN с нулева дължина, валидиране на колони, валидиране на таблица)

Като най-добра практика Използвайте отчета за оценка на SSMA, който показва резултатите от конвертирането, включително грешки, предупреждения, информационни съобщения, времеви разчети за извършване на мигрирането и индивидуалните стъпки за коригиране на грешки, които трябва да изпълните, преди да можете действително да местите обекти.

Преобразуването на обекти на база данни взема дефинициите на обектите от метаданните на Access, конвертира ги в еквивалентен синтаксис за транзакция (T-SQL)и след това зарежда тази информация в проекта. След това можете да прегледате обектите на SQL Server или SQL Azure и техните свойства с помощта на SQL Server или SQL Azure Explorer.

За да преобразувате, зареждате и мигрирате обекти към SQL Server, следвайте това ръководство.

Съвет    След като успешно мигрирате вашата база данни на Access, запишете файла на проекта за по-късна употреба, така че да можете да мигрирате отново данните си за тестване или окончателна миграция.

Свързване на таблици

Помислете за инсталиране на най-новата версия на OLE база данни на SQL Server и ODBC, вместо да използвате местните драйвери на SQL Server, които са с Windows. Не само по-новите драйвери са по-бързи, но поддържат нови функции в Azure SQL, които се използват от предишните шофьори. Можете да инсталирате драйверите на всеки компютър, на който се използва конвертираната база данни. За повече информация вижте Microsoft OLE DB Driver 18 за SQL Server и Microsoft ODBC DRIVER 17 за SQL Server.

След като мигрирате таблиците на Access, можете да създадете връзка към таблиците в SQL Server, който сега хоства вашите данни. Свързването директно от Access ви предоставя по-лесен начин да преглеждате вашите данни, вместо да използвате по-сложните инструменти за управление на SQL Server.  Можете да задавате заявки и да редактирате свързани данни в зависимост от разрешенията, зададени от администратора на базата данни на SQL Server.

Забележка    Ако създавате ODBC DSN, когато се свързвате към вашата база данни на SQL Server по време на процеса на свързване, създайте един и същ DSN на всички машини, които използват новото приложение, или програмно Използвайте низа на връзката, съхранен във DSN файла.

За повече информация вижте Свързване към или импортиране на данни от база данни на AZURE SQL Server и Импортиране или свързване към данни в база данни на SQL Server.

Съвет   Не забравяйте да използвате диспечера на свързани таблици в Access, за да обновите лесно и повторно свързване на таблици. За повече информация вижте управление на свързани таблици.

Тест и преразглеждане

Следващите раздели описват често срещани проблеми, с които можете да се сблъскате по време на миграция и как да се справите с тях.

Заявки

Конвертират се само заявки за избиране; други заявки не са, включително избиране на заявки, които имат параметри. Възможно е някои заявки да не се конвертират напълно и SSMA отчети за грешки по време на процеса на преобразуване. Можете ръчно да редактирате обекти, които не се конвертират чрез синтаксис T-SQL. Синтактичните грешки може също да изискват ръчно преобразуване на функциите и типовете данни на Access в SQL Server. За повече информация вижте Сравняване на SQL Access с SQL Server TSQL.

Типове данни

Access и SQL Server имат подобни типове данни, но са наясно със следните потенциални проблеми.

Голямо число    Типът данни "голямо число" съхранява непарична числова стойност и е съвместима с типа данни SQL bigint. Можете да използвате този тип данни, за да изчислите ефективно големите числа, но изисква използването на файловия 64 формат на Access 16 (16.0.7812 или по-нова версия) За повече информация вижте използване на типа данни "голямо число" и Изберете между 64-битова или 32-битова версия на Office.

Да/не    По подразбиране колоната Access Yes/не се конвертира в поле за битове на SQL Server. За да избегнете заключване на записи, Уверете се, че полето за битове е зададено като забрана на ПРАЗНИ стойности. В SSMA можете да изберете колоната за малко, за да зададете свойството за разрешение nulls на не. В TSQL използвайте командата Създаване на таблица или Промяна на таблици .

Дата и час    Има няколко съображения за дата и час:

  • Ако нивото на съвместимост на базата данни е 130 (SQL Server 2016) или по-нова версия, а свързана таблица съдържа една или повече колони за дата и час или datetime2, таблицата може да върне съобщението #deleted в резултатите. За повече информация вижте Access свързана таблица към база данни на SQL Server връща #deleted.

  • Използвайте тип данни datetime2 , който има по-голям диапазон от дати от дата и час.

  • Когато извършвате заявки за дати в SQL Server, вземете под внимание времето, както и датата. Например:

    • DateOrdered между 1/1/19 и 1/31/19 може да не включва всички поръчки.

    • DateOrdered между 1/1/19 00:00:00 AM и 1/31/19 11:59:59 PM включва всички поръчки.

Attachment   Тип данни за прикачени файлове съхранява файл в базата данни на Access. В SQL Server имате няколко опции, които да обмислите. Можете да извлечете файловете от базата данни на Access и след това да обмислите съхраняване на връзки към файлове във вашата база данни на SQL Server. Друга възможност е да използвате FILESTREAM, FileTables или Remote BLOB Store (мач за Купата), за да поддържате прикачени файлове, съхранени в базата данни на SQL Server.

Хипервръзка    Таблиците на Access имат колони за хипервръзки, които SQL Server не поддържа. По подразбиране тези колони ще бъдат конвертирани в nvarchar (max) колони в SQL Server, но можете да персонализирате съпоставянето, за да изберете по-малък тип данни. Във вашето решение на Access все още можете да използвате поведението на хипервръзката във формуляри и отчети, ако сте задали свойството на хипервръзката за контролата на True.

Поле "многоценно"    Полето за много стойности на Access се конвертира в SQL Server като поле ntext, което съдържа разделения набор от стойности. Тъй като SQL Server не поддържа многозначен тип данни, който да моделира релация "много към много", може да е необходима допълнителна работа по проектиране и преобразуване.

За повече информация за съпоставяне на типове данни на Access и SQL Server вижте Сравняване на типове данни.

Забележка    Многооценените полета не се конвертират и са прекратени в Access 2010.

За повече информация вижте типовете дата и час, низове и двоични типовеи числови типове.

Visual Basic

Макар че VBA не се поддържа от SQL Server, обърнете внимание на следните възможни проблеми:

Функции на VBA в заявки    Заявките за достъп поддържат VBA функции на данни в колона на заявка. Но заявки за достъп, които използват функции на VBA, не могат да се изпълняват на SQL Server, така че всички заявени данни се подават към Microsoft Access за обработка. В повечето случаи тези заявки трябва да бъдат конвертирани в транзитни заявки.

Дефинирани от потребителя функции в заявки    Заявките на Microsoft Access поддържат използването на функциите, дефинирани във VBA модули, за да обработват данни, подадени към тях. Заявките могат да бъдат самостоятелни заявки, SQL изявления във източници на записи за формуляри и отчети, източници на данни на разгъващи се списъци и списъчни полета във формуляри, отчети и полета на таблица, както и изрази за валидиращо правило. SQL Server не може да изпълни тези дефинирани от потребителя функции. Може да се наложи ръчно да проектирате тези функции и да ги конвертирате в съхранени процедури на SQL Server.

Оптимизиране на производителността

До момента най-важният начин за оптимизиране на производителността с вашия нов, заден край на SQL Server е да решите кога да използвате локални или отдалечени заявки. Когато мигрирате вашите данни към SQL Server, също така преминавате от файлов сървър към модел на база данни на клиент-сървър за изчисления. Следвайте тези общи указания:

  • Провеждайте малки заявки за само за четене на клиента за бърз достъп.

  • Провеждайте дълги, четене/запис на заявки на сървъра, за да се възползвате от по-голямата обработваща мощ.

  • Намаляване на мрежовия трафик с филтри и агрегиране за прехвърляне само на данните, които ви трябват.

Оптимизиране на производителността в модела на база данни на клиент Server

За повече информация вижте Създаване на транзитна заявка.

По-долу са изброени допълнителни Препоръчителни указания.

Поставяне на логика на сървъра    Вашето приложение може да използва също и изгледи, дефинирани от потребителя функции, съхранени процедури, изчисляеми полета и превключватели за централизиране и споделяне на логически приложения, бизнес правила и правила, сложни заявки, проверка на данни и код за цялостност на справочната информация сървъра, а не на клиента. Запитайте се, може ли тази заявка или задача да се изпълнява на сървъра по-добре и по-бързо? Накрая Изпробвайте всяка заявка, за да осигурите оптимална производителност.

Използване на изгледи във формуляри и отчети    В Access направете следното:

  • За формуляри Използвайте SQL изглед за формуляр "само за четене" и SQL индексиран изглед за формуляр за четене/запис като източник на записи.

  • За отчетите Използвайте SQL изглед като източник на записи. Създайте отделен изглед за всеки отчет, така че да можете по-лесно да актуализирате определен отчет, без да се засягат други отчети.

Минимизиране на зареждането на данни във формуляр или отчет    Не показвай данни, докато потребителят не попита за него. Например, оставете свойството RecordSource празно, Накарайте потребителите да изберат филтър във формуляра и след това да попълните свойството RecordSource с филтъра. Или използвайте клаузата WHERE на DoCmd. OpenForm и DoCmd. OpenReport, за да покажете точните данни, необходими за потребителя. Помислете за изключване на навигацията в запис.

Бъдете внимателни с хетерогенните заявки   Избягвайте да изпълнявате заявка, която съчетава таблица на локален достъп и свързана таблица на SQL Server, понякога наричана хибридна заявка. Този тип заявка все още изисква достъп за изтегляне на всички данни на SQL Server в локалния компютър и след това изпълнете заявката, тя не изпълнява заявката в SQL Server.

Кога да използвате локални таблици    Обмислете дали да не използвате локални таблици за данни, които рядко се променят, като например списък със състояния или провинции в страна или регион. Статичните таблици често се използват за филтриране и могат да се представят по-добре в предния край на Access.

За повече информация вижте Съветник за настройка на двигателя на база данни, Използвайте Analyzer за производителност, за да оптимизирате база данни на Accessи да оптимизирате приложенията на Microsoft Office Access, свързани с SQL Server.

Вж. също

Ръководство за мигриране на бази данни на Azure

Блог

Microsoft Access за мигриране, конвертиране и преоразмеряване на SQL Server

Начини за споделяне на настолна база данни

Забележка:  Тази страница е преведена чрез автоматизация и може да съдържа граматически грешки и несъответствия. Нашата цел е това съдържание да ви бъде полезно. Можете ли да ни кажете дали информацията е била полезна за вас? Ето статията на английски за справка.

Разширете уменията си в Office
Преглед на обучението
Получавайте първи новите функции
Присъединете се към участниците в Office Insider

Беше ли полезна тази информация?

Благодарим ви за обратната връзка!

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×