Что вызывает «SQL01268: Сообщение 1834: не может быть перезаписано. Используется базой данных»?(в базе данных проекта) - PullRequest
3 голосов
/ 07 декабря 2011

Полная ошибка ниже:

Ошибка 1 SQL01268: Поставщик данных .Net SqlClient: Сообщение 1834, Уровень 16, Состояние 1, Строка 1 Файл 'C: \ Program Files \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA \ testdatabase.mdf' не может быть перезаписан Он используется базой данных 'testdatabase'. SchemaCompare5 25 0

Я читал об этом на некоторых форумах, и довольно много людей получали это, и, возможно, для некоторых это было связано с параметризацией имени пути к файлу к БД и т. Д. Или с пометкой «игнорировать имена файлов и пути к файлам и файлам журналов». «До начала сравнения - это я пытался безрезультатно.

Кто-то, кто имеет такую ​​же или похожую проблему: http://social.msdn.microsoft.com/Forums/en/vstsdb/thread/5a8b8c52-adb4-4a5a-95ed-09ad22bacf60

По сути, я, кажется, получаю эту ошибку независимо от того, какие базы данных я использую для цели и источника. Скажем, даже если я создаю новую базу данных с одной таблицей и другой базой данных без таблиц и с другим именем и пытаюсь обновить схему базы данных без таблиц, используя db с одной таблицей, это все равно выдает мне ошибку. Почти как SQL Server Express сошел с ума. Я помню, как раньше использовал инструмент сравнения схем без проблем. Все соединения БД были созданы, пытались сделать это разными способами, но безрезультатно: указание на копию * .mdf db в другой папке или удаление объектов из папки DATA в каталоге mysql в программных файлах и т. Д.

Также, кажется, я читал, что кто-то решил похожую проблему, удалив некоторые файлы по схеме. инструмент сравнения создает, думаю, что они типа * .sql, но не знаю, какие именно.

Ответы [ 3 ]

1 голос
/ 09 сентября 2012

Если целевая БД уже существует, сначала удалите ее через Management Studio перед первым развертыванием.

Я уже создал базу данных вручную через SQL Server Management Studio, когда устанавливал исходное соединение при создании проекта базы данных с помощью мастера SQL Server 2008 в VS. Это не позволило бы мне продолжить, пока он не смог обнаружить, что база данных существует. Затем, когда я впервые попал на шаг Deploy, он выдал ту же ошибку, что и выше. Я просто зашел в Management Studio и удалил БД, затем попытался развернуть, и все работало нормально. Интересно, что теперь он развертывается каждый раз, и мне не нужно заходить и каждый раз удалять его.

1 голос
/ 16 января 2012

Проблема возникает из-за того, что файлы базы данных уже существуют.

Попробуйте выполнить приведенные ниже действия в рамках проекта базы данных Visual Studio.

Создать схему сравнения.

Перейти в меню: Данные> Сравнение схем> Экспорт в> Редактор

Как только сценарий будет создан, удалите команды alter database, которые добавляют физические файлы. Затем создайте соединение, переключитесь в режим SQLCMD (убедитесь, что вы сфокусировались на сценарии) и выполните сценарий.

Чтобы переключиться в режим доступа SQLCMD: Данные> Редактор Transact-SQL> Режим SQLCMD

0 голосов
/ 17 января 2014
      RESTORE DATABASE B FROM DISK = 'A.bak'
      WITH MOVE 'DataFileLogicalName' TO 'C:\SQL Directory\DATA\B.mdf',
      MOVE 'LogFileLogicalName' TO 'C:\SQL Directory\DATA\B.ldf',
      REPLACE     ---> Needed if database B already exists
...