Почему это такая миссия - резервное копирование базы данных SQL Server 2008 Express?

StackOverflow https://stackoverflow.com/questions/4195721

Вопрос

Я бы не стал описать себя как боясь перемен - но боялся новых технологий? ДА, В САМОМ ДЕЛЕ! Технологии от операционных систем до серверов базы данных, кажется, становятся ошибочными, неэффективными и отсталым, чем дальше они «прогрессируют»

MSDE 2000 (Как они могли бы назвать «SQL 2000 Express» в современном мире)

BACKUP [MyDatabase] TO FILE 'c:\backups\mybackup.backup'

SQL 2008 Express

Подожди! Это «экземпляр пользователя» - чтобы подтвердить его, нам нужно прикрепить его к экземпляру сервера
Подожди! Чтобы прикрепить его, нам нужен SQL Management Studio Express (78MB Download)
Подожди! Когда мы входим в наш экземпляр SQLEXPRASS Server и пытаемся прикрепить нашу базу данных, это дает нам ошибку, которая буквально выглядит как ошибка в нашем проекте Homebrew Dev:

Название: Microsoft SQL Server Management Studio

Не может показать запрошенный диалог.

------------------------------ ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Имя параметра: фактическое значение ncolindex было -1. (Microsoft.sqlserver.gridControl)

Может ли кто-нибудь объяснить, как сделать резервное копирование экземпляра пользователя базы данных SQL Server 2008 Express в коде T-SQL?

(Извините, если это похоже на пламя в Ummmm, Microsoft - я на самом деле их большой поклонник. Просто очень зол на такие вещи! Пожалуйста, не голосуйте за меня ...)

Это было полезно?

Решение 2

Некоторые ключевые советы должны отметить при попытке выполнить резервную копию экземпляра пользователя

а.) Соединение

Ваша строка подключения должна выглядеть так:

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MyDatabase.mdf;Integrated Security=True;User Instance=True;Database=MyDatabaseAlias

это существенный что ваша строка подключения дает подключению псевдоним Database=MyDatabaseAlias - этот псевдоним не может быть дублирована одновременно на той же машине или ваше соединение может выйти из строя.

б.) Резервное копирование

Как указано выше, транзакция SQL для резервного копирования базы данных одинаково на SQL MSDE/2000/2005/2008/R2 - как только у вас прикреплена база данных и псевдоним!

BACKUP DATABASE MyDatabaseAlias TO DISK = 'c:\backups\mydatabase_20101117.backup'

Что действительно удивительно, так это ошибки Bull $ H! T, которые вы можете получить, потому что у вашей строки соединения нет псевдоним Database=MyDatabaseAlias часть.

например, невозможно открыть физический файл 'c: code myproject app_data mydatabase.mdf' Ошибка операционной системы 32: "32 (процесс не может получить доступ к файлу, поскольку он используется другим процессом.)". Заканчивая ненормально.

в) Восстановление

USE [master]; RESTORE DATABASE MyDatabaseAlias FROM DISK = 'c:\backups\mydatabase_20101117.backup'  WITH REPLACE

Не забудь все необходимо USE [master]; в начале этого утверждения (и отметьте, что его Все на одной линии Для тех, кто выполняет команду из DataContext Или аналогично), если вы это сделаете, он не сможет перезаписать существующую базу данных, потому что вы все еще будете подключены к ней.

Еще раз, ассортимент Полностью вводят в заблуждение ошибки Вы можете получить здесь, из -за неверной строки подключения, бесконечная.

Другие советы

Хм, если это экземпляр пользователя, то самая простая стратегия резервного копирования - скопировать файл. (Хотя это не подключено к SQL Server).

Если вам нужна более полная стратегия резервного копирования (например, транзакционные резервные копии), то вам действительно следует рассмотреть более полную базу данных (например, «нормальный», прикрепленный к полному экземпляру SQL Server)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top