Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode
MS Access и C# — работаем с базой данных из программы Windows Forms
Рассмотрим выполнение запросов SELECT, INSERT, UPDATE и DELETE к базе данных Microsoft Access из программы на языке C#, на примере проекта Windows Forms в Visual Studio. В конце статьи вы найдете исходники, а также видеоурок по данной теме.
Проектирование базы данных MS Access
Создадим в Microsoft Access базу данных Workers (рабочие) с одной таблицей Worker (рабочий).
Таблица содержит следующие столбцы:
- w_id (идентификатор записи) — тип данных Счетчик;
- w_name (имя) — тип данных Короткий текст;
- w_position (должность) — тип данных Короткий текст;
- w_salary (зарплата) — тип данных Числовой.
Для корректной работы с базой данных MS Access с помощью языка C#, ее необходимо сохранить в формате с расширением .mdb

Создание проекта Windows Forms в Visual Studio на языке C#
Создадим проект Windows Forms на C# и поместим на форму следующие компоненты:
TextBox, ListBox и пять кнопок Button.

На макете формы в Visual Studio выполним двойные щелчки левой кнопкой мыши на всех кнопках, создав тем самым обработчики событий нажатия для каждой кнопки.
Включение доступа к VBA для создания или открытия Инструменты Visual Studio для проекта системы Microsoft Office
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Перед созданием или открытием Инструменты Visual Studio для проекта Microsoft Office необходимо явно включить доступ к системе проектов Visual Basic для приложений (VBA).
Для проектов разработки Microsoft Office требуется доступ к системе проектов Visual Basic для приложений (VBA) в Microsoft Office Word и Microsoft Office Excel, даже если проекты не используют Visual Basic для приложений. Поддержка элементов управления времени разработки в проектах Visual Basic и C# зависит от системы проектов Visual Basic для приложений.
Некоторые макровирусы Microsoft Office пытаются автоматизировать систему проектов Visual Basic для приложений как способ своего распространения. Разрешая доступ к системе проектов Visual Basic для приложений, вы отключаете средство защиты, которое позволяет предотвратить распространение макровирусов. Тем не менее, остаются стандартные средства обеспечения безопасности макросов: уровень безопасности макросов и список надежных издателей, поддерживаемый для приложений Office, помогут выявить выполнение макросов на компьютере.
Это касается только компьютера разработки. Компьютеры конечных пользователей не нуждаются в этом параметре для запуска решений Office.
Важно отметить, что отключение доступа к системе проектов Visual Basic для приложений само по себе не защитит вас от вирусов, оно просто помогает предотвратить распространение некоторых вирусов в другие документы в случае заражения компьютера макровирусом. Эта возможность отключена по умолчанию, что обеспечивает дополнительный уровень защиты компьютера. Однако ее включение не делает ваш компьютер более подверженным атакам, если вы выполняете рекомендации по обеспечению безопасности.
Лучшая защита от вирусов макросов Office — запуск Office на высоком или очень высоком уровне безопасности, только доверять макросам из проверенных, известных источников и поддерживать актуальность с помощью исправлений безопасности и сканеров вирусов.
Вы можете включить или отключить параметр Trust Access to Visual Basic Project вручную.
При появлении ошибок VBA или COM можно восстановить установку Office.
Заинтересованы в разработке решений, которые расширяют возможности Office на нескольких платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office имеют небольшое пространство по сравнению с надстройками и решениями VSTO, и вы можете создавать их практически с помощью любой технологии веб-программирования, таких как HTML5, JavaScript, CSS3 и XML.
Включение или отключение доступа к проектам Visual Basic
- Перейдите на вкладку Файл .
- Щелкните Параметры.
- Щелкните Центр управления безопасностью и щелкните центр управления безопасностью Параметры.
- В Центре управления безопасностью щелкните макрос Параметры.
- Проверьте или не проверка Доверять доступу к объектной модели проекта VBA, чтобы включить или отключить доступ к проектам Visual Basic.
- Щелкните OK.
Включение или отключение доступа к проектам Visual Basic с помощью системы Microsoft Office 2007
- В меню «Сервис» в Word или Excel наведите указатель мыши на макрос и нажмите кнопку «Безопасность«.
- В диалоговом окне «Безопасность» откройте вкладку «Доверенные издатели«.
- Выберите, чтобы включить или очистить, чтобы отключить, trust Access to Visual Basic Project.
- Щелкните OK.
Настройка уровня безопасности макросов в Office
- Перейдите на вкладку Файл .
- Щелкните Параметры.
- Щелкните Центр управления безопасностью и щелкните центр управления безопасностью Параметры.
- В Центре управления безопасностью щелкните макрос Параметры.
- В разделе «Макрос Параметры» выберите нужный параметр.
- Щелкните OK.
Настройка уровня безопасности макросов Office с помощью системы Microsoft Office 2007
- В меню «Сервис» в Word или Excel наведите указатель мыши на макрос и нажмите кнопку «Безопасность«.
- На вкладке «Уровень безопасности» выберите нужный параметр. Вкладка «Уровень безопасности» содержит сведения о каждом уровне. Дополнительные сведения см. в разделе «Уровни безопасности макросов» справки Microsoft Office.
Установка VBA в выпуске 2007 системы Microsoft Office
- В панель управления запустите команду «Добавить или удалить программы» или «Программы и компоненты«.
- Выберите Office в списке установленных программ .
- Щелкните Изменить.
- Выберите » Добавить или удалить компоненты» и нажмите кнопку «Продолжить«.
- Нажмите кнопку «Выбрать расширенную настройку приложений» и нажмите кнопку «Далее«.
- Разверните общие функции Office в списке «Выбор параметров обновления» для приложений и инструментов.
- Откройте раскрывающееся меню рядом с Visual Basic для приложений и нажмите кнопку «Запустить с моего компьютера«.
- Нажмите кнопку Продолжить.
- Нажмите кнопку Закрыть.
Восстановление установки Office
- В панель управления запустите команду «Добавить или удалить программы» или «Программы и компоненты«.
- Выберите свою версию Office в списке установленных программ .
- Щелкните Изменить.
- Выберите «Переустановить » или «Восстановить«, а затем нажмите кнопку «Далее«.
- Выберите » Обнаружить и восстановить ошибки» в моей установке Office и нажмите кнопку «Установить«.
См. также
ASP.NET веб-развертывание с помощью Visual Studio: подготовка к развертыванию базы данных
В этой серии руководств показано, как развернуть (опубликовать) веб-приложение ASP.NET для Служба приложений Azure веб-приложения или стороннего поставщика услуг размещения с помощью Visual Studio 2012 или Visual Studio 2010. Сведения о серии см. в первом руководстве этой серии.
Общие сведения
В этом руководстве показано, как подготовить проект к развертыванию базы данных. Структура базы данных и некоторые (не все) данные в двух базах данных приложения должны быть развернуты в тестовой, промежуточной и рабочей средах.
Как правило, при разработке приложения тестовые данные внося в базу данных, которую не хотите развертывать на активном сайте. Однако у вас также могут быть некоторые рабочие данные, которые вы хотите развернуть. В этом руководстве вы настроите проект Университета Contoso и подготовите скрипты SQL, чтобы при развертывании включались правильные данные.
Напоминание. Если при работе с руководством появляется сообщение об ошибке или что-то не работает, обязательно проверка страницу устранения неполадок.
SQL Server Express LocalDB
В примере приложения используется SQL Server Express LocalDB. SQL Server Express является бесплатным выпуском SQL Server. Он обычно используется во время разработки, так как он основан на том же ядре СУБД, что и полные версии SQL Server. Вы можете протестировать с помощью SQL Server Express и убедиться, что приложение будет вести себя так же в рабочей среде, за некоторыми исключениями для функций, которые различаются в разных выпусках SQL Server.
LocalDB — это специальный режим выполнения SQL Server Express, который позволяет работать с базами данных в виде MDF-файлов. Как правило, файлы базы данных LocalDB хранятся в папке App_Data веб-проекта. Функция пользовательского экземпляра в SQL Server Express также позволяет работать с MDF-файлами, но эта функция экземпляра пользователя не рекомендуется использовать, поэтому для работы с MDF-файлами рекомендуется использовать LocalDB.
Как правило, SQL Server Express не используется для рабочих веб-приложений. LocalDB, в частности, не рекомендуется использовать в рабочей среде с веб-приложением, так как она не предназначена для работы с IIS.
В Visual Studio 2012 LocalDB устанавливается по умолчанию вместе с Visual Studio. В Visual Studio 2010 и более ранних версиях SQL Server Express (без LocalDB) устанавливается по умолчанию вместе с Visual Studio. Именно поэтому вы установили его в качестве одного из предварительных требований в первом руководстве этой серии.
Дополнительные сведения о выпусках SQL Server, включая LocalDB, см. в следующих ресурсах Работа с базами данных SQL Server.
Entity Framework и универсальные поставщики
Для доступа к базе данных приложению Университета Contoso требуется следующее программное обеспечение, которое должно быть развернуто вместе с приложением, так как оно не входит в платформа .NET Framework:
- универсальные поставщики ASP.NET (позволяет системе членства ASP.NET использовать базу данных Azure SQL)
- Entity Framework
Так как это программное обеспечение входит в пакеты NuGet, проект уже настроен таким образом, чтобы необходимые сборки развертывались вместе с проектом. (Ссылки указывают на текущие версии этих пакетов, которые могут быть более новыми, чем установленные в начальном проекте, скачанном для этого руководства.)
При развертывании в стороннем поставщике услуг размещения вместо Azure убедитесь, что используется Entity Framework 5.0 или более поздней версии. Для более ранних версий Code First Migrations требуется полное доверие, и большинство поставщиков услуг размещения будут запускать приложение в среде среднего доверия. Дополнительные сведения о среднем доверии см. в руководстве По развертыванию в службах IIS в качестве тестовой среды .
Настройка Code First Migrations для развертывания базы данных приложений
База данных приложений Университета Contoso управляется Code First, и вы развернете ее с помощью Code First Migrations. Общие сведения о развертывании базы данных с помощью Code First Migrations см. в первом руководстве этой серии.
При развертывании базы данных приложения обычно не просто развертывается база данных разработки со всеми данными в ней в рабочей среде, так как большая часть данных в ней, вероятно, только для тестирования. Например, имена учащихся в тестовой базе данных являются вымышленными. С другой стороны, часто не удается развернуть только структуру базы данных без данных. Некоторые данные в тестовой базе данных могут быть реальными и должны быть там, когда пользователи начинают использовать приложение. Например, в базе данных может быть таблица, содержащая допустимые значения оценок или реальные названия отделов.
Чтобы имитировать этот распространенный сценарий, вы настроите метод Code First Migrations Seed , который вставляет в базу данных только те данные, которые вы хотите там находиться в рабочей среде. Этот Seed метод не должен вставлять тестовые данные, так как он будет выполняться в рабочей среде после того, как Code First создаст базу данных в рабочей среде.
В более ранних версиях Code First до выпуска Seed миграции методы также вставляли тестовые данные, так как при каждом изменении модели во время разработки базу данных приходилось полностью удалять и повторно создавать с нуля. При использовании Code First Migrations тестовые данные сохраняются после изменений базы данных, поэтому включать тестовые данные в Seed метод не требуется. Скачанный проект использует метод включения всех данных в Seed метод класса инициализатора. В этом руководстве вы отключите этот класс инициализатора и включите Миграции. Затем вы обновите Seed метод в классе конфигурации Migrations, чтобы он вставлял только данные, которые нужно вставить в рабочую среду.
На следующей схеме показана схема базы данных приложения.

В этих руководствах предполагается, что Student таблицы и Enrollment должны быть пустыми при первом развертывании сайта. Другие таблицы содержат данные, которые необходимо предварительно загрузить при запуске приложения.
Отключение инициализатора
Так как вы будете использовать Code First Migrations, вам не нужно использовать инициализатор DropCreateDatabaseIfModelChanges Code First. Код для этого инициализатора находится в файле SchoolInitializer.cs в проекте ContosoUniversity.DAL. Параметр в элементе appSettings файла Web.config приводит к тому, что этот инициализатор запускается всякий раз, когда приложение пытается получить доступ к базе данных в первый раз:
Откройте файл приложенияWeb.config и удалите или закомментируйте add элемент, указывающий класс инициализатора Code First. Теперь appSettings элемент выглядит следующим образом:
Еще один способ указать класс инициализатора — вызвать Database.SetInitializer метод в Application_Start файле Global.asax . Если вы включаете миграцию в проекте, который использует этот метод для указания инициализатора, удалите эту строку кода.
Если вы используете Visual Studio 2013, добавьте следующие шаги между шагами 2 и 3: (a) В PMC введите «update-package entityframework -version 6.1.1», чтобы получить текущую версию EF. Затем (б) выполните сборку проекта, чтобы получить список ошибок сборки и исправить их. Удалите операторы using для пространств имен, которые больше не существуют, щелкните правой кнопкой мыши и выберите команду Разрешить, чтобы добавить инструкции using там, где они необходимы, и измените вхождения System.Data.EntityState на System.Data.EntityState.
Включение Code First Migrations
- Убедитесь, что проект ContosoUniversity (не ContosoUniversity.DAL) задан в качестве запускаемого проекта. В Обозреватель решений щелкните правой кнопкой мыши проект ContosoUniversity и выберите на выбор в качестве запускаемого проекта. Code First Migrations найдите строку подключения к базе данных в запускаемом проекте.
- В меню Сервис выберитеКонсоль диспетчера>пакетов NuGet.

- В верхней части окна Консоль диспетчера пакетов выберите ContosoUniversity.DAL в качестве проекта по умолчанию, а затем введите PM> «enable-migrations».
(Если возникает ошибка с сообщением о том, что команда enable-migrations не распознана, введите команду update-package EntityFramework -Reinstall и повторите попытку.) Эта команда создает папку Migrations в проекте ContosoUniversity.DAL и помещает в нее два файла: файл Configuration.cs , который можно использовать для настройки migrations, и файл InitialCreate.cs для первой миграции, создающей базу данных.
Проект DAL был выбран в раскрывающемся списке Проект по умолчаниюконсоли диспетчера пакетов , так как enable-migrations команда должна выполняться в проекте, содержающем класс контекста Code First. Когда этот класс находится в проекте библиотеки классов, Code First Migrations ищет строку подключения к базе данных в запускаемом проекте для решения. В решении ContosoUniversity веб-проект был задан в качестве запускаемого проекта. Если вы не хотите назначать проект со строкой подключения в качестве запускаемого проекта в Visual Studio, можно указать запускаемый проект в команде PowerShell. Чтобы просмотреть синтаксис команды, введите команду get-help enable-migrations . Команда enable-migrations автоматически создает первую миграцию, так как база данных уже существует. Кроме того, миграция создает базу данных. Для этого используйте Обозреватель сервера или SQL Server обозреватель объектов, чтобы удалить базу данных ContosoUniversity перед включением миграции. После включения миграции создайте первую миграцию вручную, введя команду add-migration InitialCreate. Затем можно создать базу данных, введя команду «update-database».
Настройка метода Seed
В этом руководстве вы добавите фиксированные данные, добавив код в Seed метод класса Code First Migrations Configuration . Code First Migrations вызывает метод после каждой Seed миграции.
Seed Так как метод выполняется после каждой миграции, в таблицах уже есть данные после первой миграции. Чтобы справиться с этой ситуацией, используйте AddOrUpdate метод для обновления уже вставленных строк или вставьте их, если они еще не существуют. Метод AddOrUpdate может оказаться не лучшим вариантом для вашего сценария. Дополнительные сведения см. в статье Использование метода AddOrUpdate для EF 4.3 в блоге Джули Лерман.
-
Откройте файл Configuration.cs и замените комментарии в методе Seed следующим кодом:
var instructors = new List < new Instructor < FirstMidName = "Kim", LastName = "Abercrombie", HireDate = DateTime.Parse("1995-03-11"), OfficeAssignment = new OfficeAssignment < Location = "Smith 17" >>, new Instructor < FirstMidName = "Fadi", LastName = "Fakhouri", HireDate = DateTime.Parse("2002-07-06"), OfficeAssignment = new OfficeAssignment < Location = "Gowan 27" >>, new Instructor < FirstMidName = "Roger", LastName = "Harui", HireDate = DateTime.Parse("1998-07-01"), OfficeAssignment = new OfficeAssignment < Location = "Thompson 304" >>, new Instructor < FirstMidName = "Candace", LastName = "Kapoor", HireDate = DateTime.Parse("2001-01-15") >, new Instructor < FirstMidName = "Roger", LastName = "Zheng", HireDate = DateTime.Parse("2004-02-12") >>; instructors.ForEach(s => context.Instructors.AddOrUpdate(i => i.LastName, s)); context.SaveChanges(); var departments = new List < new Department < Name = "English", Budget = 350000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 1 >, new Department < Name = "Mathematics", Budget = 100000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 2 >, new Department < Name = "Engineering", Budget = 350000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 3 >, new Department < Name = "Economics", Budget = 100000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 4 >>; departments.ForEach(s => context.Departments.AddOrUpdate(d => d.Name, s)); context.SaveChanges(); var courses = new List < new Course < CourseID = 1050, Title = "Chemistry", Credits = 3, DepartmentID = 3 >, new Course < CourseID = 4022, Title = "Microeconomics", Credits = 3, DepartmentID = 4 >, new Course < CourseID = 4041, Title = "Macroeconomics", Credits = 3, DepartmentID = 4 >, new Course < CourseID = 1045, Title = "Calculus", Credits = 4, DepartmentID = 2 >, new Course < CourseID = 3141, Title = "Trigonometry", Credits = 4, DepartmentID = 2 >, new Course < CourseID = 2021, Title = "Composition", Credits = 3, DepartmentID = 1 >, new Course < CourseID = 2042, Title = "Literature", Credits = 4, DepartmentID = 1 >>; courses.ForEach(s => context.Courses.AddOrUpdate(s)); context.SaveChanges(); courses[0].Instructors.Add(instructors[0]); courses[0].Instructors.Add(instructors[1]); courses[1].Instructors.Add(instructors[2]); courses[2].Instructors.Add(instructors[2]); courses[3].Instructors.Add(instructors[3]); courses[4].Instructors.Add(instructors[3]); courses[5].Instructors.Add(instructors[3]); courses[6].Instructors.Add(instructors[3]); context.SaveChanges();

Ссылки на List имеют красные волнистые линии под ними, так как у using вас еще нет оператора для его пространства имен. Щелкните правой кнопкой мыши один из экземпляров List и выберите команду Разрешить, а затем выберите команду с помощью System.Collections.Generic. Этот пункт меню добавляет следующий код в using операторы в верхней части файла.
using System.Collections.Generic;
Теперь проект готов к развертыванию базы данных ContosoUniversity . После развертывания приложения при первом запуске и переходе на страницу, которая обращается к базе данных, Code First создаст базу данных и запустит этот Seed метод.
Добавление кода в Seed метод — это один из многих способов вставки фиксированных данных в базу данных. Альтернативой является добавление кода в Up методы и Down каждого класса миграции. Методы Up и Down содержат код, реализующий изменения базы данных. Примеры см. в руководстве Развертывание обновления базы данных .
Можно также написать код, который выполняет инструкции SQL с помощью Sql метода . Например, если вы добавляли столбец Бюджет в таблицу Department и хотите инициализировать все бюджеты отдела в размере 1000,00 долл. США в рамках миграции, можно добавить следующую строку кода Up в метод для этой миграции:
Sql(«UPDATE Department SET Budget = 1000»);
Создание скриптов для развертывания базы данных членства
Приложение Contoso University использует систему членства ASP.NET и проверку подлинности с помощью форм для проверки подлинности и авторизации пользователей. Страница «Обновить кредиты » доступна только для пользователей с ролью администратора.
Запустите приложение и щелкните Курсы, а затем — Обновить кредиты.

Откроется страница Вход, так как для страницы «Обновить кредиты » требуются права администратора.
Введите admin в качестве имени пользователя и devpwd в качестве пароля и нажмите кнопку Войти.

Откроется страница Обновление кредитов .

Сведения о пользователях и роли содержатся в базе данных aspnet-ContosoUniversity , указанной в строке подключения DefaultConnection в файлеWeb.config .
Эта база данных не управляется Entity Framework Code First, поэтому вы не можете использовать миграции для ее развертывания. Вы будете использовать поставщик dbDacFx для развертывания схемы базы данных и настроите профиль публикации для выполнения скрипта, который будет вставлять начальные данные в таблицы базы данных.
В Visual Studio 2013 появилась новая система членства ASP.NET (теперь называется ASP.NET Identity). Новая система позволяет хранить как таблицы приложений, так и таблицы членства в одной базе данных, а также использовать Code First Migrations для развертывания обеих баз данных. В примере приложения используется более ранняя система членства ASP.NET, которую нельзя развернуть с помощью Code First Migrations. Процедуры развертывания этой базы данных членства применяются также к любому другому сценарию, в котором приложению необходимо развернуть базу данных SQL Server, созданную не с помощью Entity Framework Code First.
Здесь также обычно не нужны те же данные в рабочей среде, что и в разработке. При первом развертывании сайта обычно исключаются большинство или все учетные записи пользователей, создаваемые для тестирования. Таким образом, скачанный проект содержит две базы данных членства: aspnet-ContosoUniversity.mdf с пользователями разработки и aspnet-ContosoUniversity-Prod.mdf с рабочими пользователями. В этом руководстве имена пользователей одинаковы в обеих базах данных: admin и nonadmin. У обоих пользователей есть пароль devpwd в базе данных разработки и prodpwd в рабочей базе данных.
Вы развернете пользователей разработки в тестовой среде, а пользователей рабочей среды — в промежуточной и рабочей среде. Для этого в этом руководстве вы создадите два скрипта SQL, один для разработки и один для рабочей среды, а в последующих руководствах вы настроите процесс публикации для их выполнения.
В базе данных членства хранится хэш паролей учетных записей. Чтобы развернуть учетные записи с одного компьютера на другом, необходимо убедиться, что подпрограммы хэширования не создают на конечном сервере другие хэши, чем на исходном компьютере. Они будут создавать одни и те же хэши при использовании универсальные поставщики ASP.NET, если вы не измените алгоритм по умолчанию. Алгоритм по умолчанию — HMACSHA256 и указывается в атрибуте проверки элемента machineKey в файле Web.config.
Скрипты развертывания данных можно создавать вручную с помощью SQL Server Management Studio (SSMS) или с помощью стороннего средства. В оставшейся части этого руководства вы узнаете, как это сделать в SSMS, но если вы не хотите устанавливать и использовать SSMS, вы можете получить скрипты из готовой версии проекта и перейти к разделу, в котором они хранятся в папке решения.
Чтобы установить SSMS, установите его из Центра загрузки: Microsoft SQL Server 2012 Express, щелкнув ENU\x64\SQLManagementStudio_x64_ENU.exe или ENU\x86\SQLManagementStudio_x86_ENU.exe. Если вы выберете неправильный вариант для вашей системы, установить его не удастся, и вы можете попробовать другой.
(Обратите внимание, что это скачивание 600 мегабайт. Установка может занять много времени и потребует перезагрузки компьютера.)
На первой странице центра установки SQL Server щелкните Создать SQL Server автономную установку или добавить компоненты в существующую установку и следуйте инструкциям, принимая варианты по умолчанию.
Создание скрипта базы данных разработки
- Запустите SSMS.
- В диалоговом окне Подключение к серверу введите (localdb)\v11.0 в качестве имени сервера, оставьте параметр Проверка подлинностиWindows и нажмите кнопку Подключиться.

- В окне обозреватель объектов разверните узел Базы данных, щелкните правой кнопкой мыши aspnet-ContosoUniversity, выберите Задачи, а затем — Создать скрипты.

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

- В диалоговом окне Дополнительные параметры скрипта прокрутите вниз до раздела Типы данных для написания скрипта и выберите параметр Только данные в раскрывающемся списке.
- Измените значение Script USE DATABASE на False. Инструкции USE недопустимы для базы данных Azure SQL и не требуются для развертывания для SQL Server Express в тестовой среде.

- Нажмите кнопку ОК.
- В диалоговом окне Создание и публикация скриптов в поле Имя файла указывается, где будет создан скрипт. Измените путь к папке решения (папке с файлом ContosoUniversity.sln) и имя файла на aspnet-data-dev.sql.
- Нажмите кнопку Далее , чтобы перейти на вкладку Сводка , а затем нажмите кнопку Далее еще раз, чтобы создать скрипт.

- Нажмите кнопку Готово.
Создание скрипта рабочей базы данных
Так как вы еще не запускали проект с рабочей базой данных, он еще не подключен к экземпляру LocalDB. Поэтому сначала необходимо подключить базу данных.
- В обозреватель объектов SSMS щелкните правой кнопкой мыши Базы данных и выберите пункт Присоединить.

- В диалоговом окне Присоединение баз данных нажмите кнопку Добавить и перейдите к файлу aspnet-ContosoUniversity-Prod.mdf в папке App_Data .

- Нажмите кнопку ОК.
- Выполните ту же процедуру, которая использовалась ранее для создания скрипта для рабочего файла. Назовите файл скрипта aspnet-data-prod.sql.
Сводка
Теперь обе базы данных готовы к развертыванию, и в папке решения есть два сценария развертывания данных.

В следующем руководстве вы настроите параметры проекта, влияющие на развертывание, и настройте автоматическое преобразование файловWeb.config для параметров, которые должны отличаться в развернутом приложении.
Дополнительные сведения
Дополнительные сведения о NuGet см. в статье Управление библиотеками проектов с помощью NuGet и Документации по NuGet. Если вы не хотите использовать NuGet, необходимо научиться анализировать пакет NuGet, чтобы определить, что он делает при установке. (Например, можно настроить Web.config преобразования, скрипты PowerShell для выполнения во время сборки и т. д.) Дополнительные сведения о работе NuGet см. в статье Создание и публикация пакета и файл конфигурации и преобразования исходного кода.
Присоединение базы данных
В этой статье описывается, как подключить базу данных в SQL Server с SQL Server Management Studio или Transact-SQL. Эту функцию можно использовать для копирования, перемещения или обновления базы данных SQL Server.
ограничения
Предварительные условия
Прежде чем продолжить, ознакомьтесь со следующими предварительными требованиями:
- Если вы перемещаете базу данных из одного экземпляра в другой, ее необходимо сначала отсоединить от любого существующего экземпляра SQL. Попытка присоединить неотсоединенную базу данных приведет к возникновению ошибки. Дополнительные сведения см. в разделе Отсоединение базы данных.
- При присоединении базы данных должны быть доступны все ее файлы данных. Они часто имеют расширения .MDF или .NDF (файлы данных), а также .LDF (файлы журнала транзакций). Кроме того, должны присутствовать и быть доступными все файловые группы для данных FILESTREAM. Дополнительные сведения о присоединении базы данных с поддержкой FILESTREAM см. в статье Перемещение базы данных с поддержкой FILESTREAM.
- Если у какого-либо файла данных путь отличается от того, каким он был при первом создании или последнем присоединении, необходимо указать текущий путь к файлу.
- Учетная запись службы ядра СУБД должна обладать разрешениями на чтение файлов в их новом расположении.
- Если MDF-файлы и LDF-файлы находятся в разных каталогах и один из путей содержит \\?\GlobalRoot , при присоединении базы данных произойдет сбой.
Для чего использовать присоединение?
При перемещении файлов базы данных в пределах одного экземпляра рекомендуется использовать запланированное перемещение ALTER DATABASE вместо отсоединения и присоединения. Дополнительные сведения см. в статье Move User Databases.
Не рекомендуется использовать отсоединение и присоединение для резервного копирования и восстановления. При отсоединении файлов для внешнего резервного копирования из SQL Server резервные копии журналов транзакций или восстановление до точки во времени будут недоступны.
Безопасность
Разрешения на доступ к файлам устанавливаются во время ряда операций с базами данных, включая их отсоединение и присоединение. При присоединении и отсоединении базы данных ядро СУБД пытается олицетворить учетную запись Windows работающего подключения, чтобы предоставить учетной записи разрешения для доступа к файлам базы данных и журналов. Для учетных записей со смешанным режимом безопасности, использующих учетные данные SQL Server, олицетворение может завершиться сбоем.
В следующей таблице перечислены разрешения файлов базы данных и журналов после завершения присоединения или отсоединения, а также указано, может ли ядро СУБД олицетворить подключающуюся учетную запись.
| Операция | Подключение учетной записи можно олицетворить | Разрешения на файлы предоставляются |
|---|---|---|
| Detach | Да | Только учетная запись, выполняющая операцию. Администратор операционной системы может добавить дополнительные учетные записи, если они понадобятся после отсоединения базы данных. |
| Detach | No | Учетной записи службы SQL Server (MSSQLSERVER) и членам локальной группы администраторов Windows. |
| Attach | Да | Учетной записи службы SQL Server (MSSQLSERVER) и членам локальной группы администраторов Windows. |
| Attach | No | Учетной записи службы SQL Server (MSSQLSERVER). |
Дополнительные сведения о разрешениях файловой системы, предоставляемых идентификаторам безопасности служб для SQL Server, см. в статье Настройка разрешений файловой системы для доступа к ядру СУБД.
Не рекомендуется подключать или восстанавливать базы данных, полученные из неизвестных или ненадежных источников. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQL или появление ошибок из-за изменения схемы или физической структуры базы данных. Перед тем как использовать базу данных, полученную из неизвестного или ненадежного источника, выполните на тестовом сервере инструкцию DBCC CHECKDB для этой базы данных, а также изучите исходный код в базе данных, например хранимые процедуры и другой пользовательский код. Дополнительные сведения о присоединении баз данных и сведения об изменениях, вносимых при присоединении баз данных в метаданные, см. в статье Присоединение и отсоединение базы данных (SQL Server).
Разрешения
Требуется разрешение CREATE DATABASE , CREATE ANY DATABASE или ALTER ANY DATABASE .
Использование SQL Server Management Studio (SSMS)
Перед перемещением базы данных
Если вы перемещаете базу данных, перед ее отсоединением от существующего экземпляра SQL Server просмотрите связанные с ней файлы и их текущее расположение на странице Свойства базы данных.
- В обозревателе объектов SQL Server Management Studio подключитесь к экземпляру ядра СУБД SQL Server, а затем разверните экземпляр.
- Раскройте список Базы данныхи выберите имя пользовательской базы данных, которую необходимо отсоединить.
- Щелкните правой кнопкой мыши имя базы данных и выберите Свойства. Выберите страницу Файлы и просмотрите записи в таблице Файлы базы данных.
Убедитесь, что перед отсоединением, перемещением и присоединением базы данных вы проверили все связанные с ней файлы. Затем переходите к этапам отсоединения, копирования файлов и присоединения базы данных, описанным в следующем разделе. Дополнительные сведения см. в разделе Отсоединение базы данных.
Присоединение базы данных
- В обозревателе объектов SQL Server Management Studio подключитесь к экземпляру ядра СУБД SQL Server, а затем выберите, чтобы развернуть это представление экземпляра в SSMS.
- Щелкните правой кнопкой мыши узел Базы данных и выберите Присоединить.
- В диалоговом окне Присоединение базы данных выберите Добавить, чтобы указать присоединяемую базу данных. В диалоговом окне Поиск файлов базы данных выберите расположение базы данных и разверните дерево каталогов, чтобы найти и выбрать ее MDF-файл, например: C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_Data.mdf
Внимание При попытке выбора базы данных, которая уже присоединена, возникает ошибка.
Базы данных для присоединения
Отобразятся сведения о выбранных базах данных.
Отображается значок, указывающий на состояние операции присоединения. Возможные варианты значков перечислены в описании Состояние ниже. Расположение файла MDF
Отображается путь и имя выбранного MDF-файла. Имя базы данных
Отображается имя базы данных. Присоединить как
Необязательный параметр, указывает другое имя, под которым присоединяется база данных. Ответственное лицо
Содержит раскрывающийся список возможных владельцев базы данных, из которого при необходимости можно выбрать другого владельца. Состояние
Отображает состояние базы данных в соответствии со следующей таблицей:
| Значок | Текст состояния | Description |
|---|---|---|
| (Нет значка) | (Нет текста) | Присоединение не начато или находится в режиме ожидания для этого объекта. Это состояние по умолчанию при открытии диалогового окна. |
| Зеленый, указывающий направо треугольник | В процессе | Операция присоединения была запущена, но не завершена. |
| Зеленый флажок | Удачное завершение | Объект успешно присоединен. |
| Красный кружок с белым крестом внутри | Ошибка | При выполнении операции присоединения возникла ошибка, и операция не была успешно завершена. |
| Кружок с двумя черными квадратами (слева и справа) и двумя белыми квадратами (сверху и снизу) | Остановлено | Присоединение не было завершено, поскольку вы остановили его выполнение. |
| Кружок, содержащий изогнутую стрелку, указывающую в направлении против часовой стрелки | Выполнен откат | Операция присоединения была успешной, но был выполнен ее откат из-за ошибки, возникшей при вложении другого объекта. |
Сообщение
Отображается пустое сообщение или гиперссылка «Файл не найден». Прибавить
Найдите необходимые основные файлы базы данных. Когда вы выбираете MDF-файл, необходимые сведения автоматически вводятся в соответствующие поля сетки Базы данных для присоединения. Удалить
Удаляет выбранный файл из сетки Базы данных для присоединения . Сведения о базе данных «
Отображаются имена файлов, которые необходимо присоединить. Чтобы проверить или изменить путь к файлу, нажмите кнопку Обзор (…).
Заметка Если файл не существует, в столбце сообщения отображается сообщение «Не найдено». Если файл журнала не найден, он существует в другом каталоге или удален. Необходимо или обновить путь файла в сетке Сведения о базе данных таким образом, чтобы этот путь указывал на правильное расположение, или удалить файл журнала из сетки. Если MDF-файл не найден, необходимо обновить путь этого файла в сетке таким образом, чтобы этот путь указывал на правильное расположение.
Использование Transact-SQL
Перед перемещением базы данных
Если вы перемещаете базу данных, перед ее отсоединением от существующего экземпляра SQL Server просмотрите связанные с ней файлы и их текущее расположение в представлении системного каталога sys.database_files . Для получения дополнительной информации см. sys.database_files (Transact-SQL).
- В СРЕДЕ SQL Server Management Studio выберите новый запрос , чтобы открыть редактор запросов.
- Скопируйте следующий скрипт Transact-SQL в редактор запросов и нажмите кнопку «Выполнить«. Этот скрипт показывает расположение физических файлов базы данных. Убедитесь, что при перемещении базы данных путем отсоединения и присоединения вы проверили все файлы.
USE [database_name] GO SELECT type_desc, name, physical_name from sys.database_files;
Убедитесь, что перед отсоединением, перемещением и присоединением базы данных вы проверили все связанные с ней файлы. Затем переходите к этапам отсоединения, копирования файлов и присоединения базы данных, описанным в следующем разделе. Дополнительные сведения см. в разделе Отсоединение базы данных.
Присоединение базы данных
- Соединитесь с ядром СУБД .
- На стандартной панели выберите пункт Создать запрос.
- Выполните инструкцию CREATE DATABASE с предложением FOR ATTACH . Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. Этот пример присоединяет все файлы базы данных AdventureWorks2022 и переименовывает базу данных MyAdventureWorks в .
CREATE DATABASE MyAdventureWorks ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'), (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf') FOR ATTACH;
Если в вашей базе данных содержатся дополнительные файлы данных (чаще всего .MDF или .NDF), их необходимо включить в инструкцию CREATE DATABASE . FOR ATTACH . Кроме того, в инструкцию также следует включить все файловые группы для данных FILESTREAM. Дополнительные сведения о присоединении базы данных с поддержкой FILESTREAM см. в статье Перемещение базы данных с поддержкой FILESTREAM.
Заметка Кроме того, можно вызвать хранимую процедуру sp_attach_db или sp_attach_single_file_db . Однако эти процедуры будут удалены в будущей версии Microsoft SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого рекомендуется использовать CREATE DATABASE . FOR ATTACH .
После обновления базы данных SQL Server
Уровень совместимости базы данных
После обновления базы данных с помощью присоединения она становится доступной. База данных автоматически обновится до уровня внутренней версии нового экземпляра. Если база данных содержит полнотекстовые индексы, то в процессе обновления будет произведен их импорт, сброс или перестроение в зависимости от установленного значения свойства сервера Режим обновления полнотекстового каталога . Если выбран режим обновления Импортировать или Перестроить, полнотекстовые индексы будут недоступны во время обновления. В зависимости от объема индексируемых данных импорт может занять несколько часов, а перестроение — в несколько (до 10) раз больше. Обратите внимание, что если при обновлении выбран режим Импортировать, а полнотекстовый каталог недоступен, то связанные с ним полнотекстовые индексы будут перестроены.
После обновления уровень совместимости базы данных останется неизменным, если только он не является в новой версии неподдерживаемым. В последнем случае обновленный уровень совместимости базы данных устанавливается как самый низкий из поддерживаемых. Например, если вы подключаете базу данных, которая была уровнем совместимости 90 перед присоединением к экземпляру SQL Server 2019 (15.x), после обновления уровня совместимости установлено значение 100, что является самым низким поддерживаемым уровнем совместимости в SQL Server 2019 (15.x). Дополнительные сведения см. в разделе Уровень совместимости ALTER DATABASE (Transact-SQL).
Система отслеживания измененных данных (CDC)
Если вы подключаете базу данных из экземпляра SQL Server 2014 (12.x) или более ранней версии, включив запись измененных данных (CDC), необходимо выполнить следующую команду, чтобы обновить метаданные отслеживания измененных данных (CDC):
USE EXEC sys.sp_cdc_vupgrade
См. также
- Отсоединение базы данных и подключение (SQL Server)
- Отсоединение базы данных
- CREATE DATABASE (SQL Server Transact-SQL)
- Настройка разрешений файловой системы для доступа к компоненту ядра СУБД
