Ошибка развертывания проекта базы данных VS2010 SQL01268 Ошибка просмотра каталога

Сбой развертывания базы данных VS2010 на моем сервере сборки, на котором установлен SQL Server 2008 R2. Вот выход, который имеет отношение:

Создание Acme.Database...

D: \ TeamCity \ BuildAgent \ Work \ da2fc5ebd5805d44 \ src \ Acme.Database \ sql \ Acme.Database.sql (30,0): ошибка SQL01268: поставщик данных.Net SqlClient: Msg 5133, уровень 16, состояние 1, строка 1 Поиск в каталоге для файла "C:\Program Files\Microsoft SQL Server**MSSQL10.MSSQLSERVER**\MSSQL\DATA\Acme_Database_log.ldf" завершился ошибкой операционной системы 3(системе не удается найти указанный путь.).

D: \ TeamCity \ BuildAgent \ Work \ da2fc5ebd5805d44 \ src \ Acme.Database \ sql \ Acme.Database.sql (30,0): ошибка SQL01268: поставщик данных.Net SqlClient: Msg 1802, уровень 16, состояние 1, строка 1 СОЗДАТЬ БАЗУ ДАННЫХ не удалось. Некоторые имена файлов не могут быть созданы. Проверьте связанные ошибки.

Произошла ошибка во время выполнения пакета.

Фактический путь здесь:

C: \ Program Files \ Microsoft SQL Server ** MSSQL10_50.MSSQLSERVER ** \ MSSQL \ DATA \ Acme_Database.mdf

Единственная ссылка на путь, который я мог найти в проекте базы данных, была в корневой папке, файл с именем:

PRIMARY.Acme_Database.sqlfile.sql

Он включает инструкцию ALTER DATABASE, которую я изменил, чтобы использовать путь _50, но это не решило проблему.

Я не уверен, зачем проекту db в любом случае знать, где находится фактический файл MDF базы данных - я бы подумал, что он может просто подключиться к нему через TSQL, но в любом случае я не могу заставить проект развернуться с этой ошибкой и был бы признателен за любую помощь.

4 ответа

Решение

Оказывается, если вы укажете "файл" в "Объектах схемы" \ "Объекты уровня базы данных" \ "Хранилище \ Файлы" (используйте "Добавить элемент, Файл"), значения, указанные в пути, переопределяют значения, найденные на сервере. Если вы должны указать их, используйте переменные из sqlcmdvariables $(DefaultdataPath)$(Databasename) для заполнения.

Посмотрите на путь к файлу по умолчанию на самом сервере.

Screencast: http://screencast.com/t/OWM5ODFjZj

Тот факт, что вы не указали путь, может быть проблемой.

[Обновить] Причина, по которой я предлагаю это, заключается в том, что во время создания сценария развертывания, если вы не указали параметры на вкладке "Параметры проекта" -> "Развертывание", DefaultDataPath ищется по пути к целевому серверу.

У меня была та же ошибка, но другое решение. Для меня все было правильно (насколько я могу судить), но сгенерированный сценарий развертывания установил переменные пути перед переменной имени базы данных - в результате чего появилась ссылка на несуществующую переменную. Я обновил Database.sqlcmdvars для жесткого кодирования значения имени базы данных - не лучшая практика, а достаточный обходной путь для моих нужд.

Я действительно ничего не знаю о TeamCity, так что это может быть глупым вопросом, но как вы делаете развертывание? Похоже, что задача развертывания MSBuild для проекта БД может принимать свойство, которое дает путь к данным:

http://www.codewrecks.com/blog/index.php/2009/10/06/deploy-a-database-project-with-tfs-build/

Можете ли вы установить путь таким образом?

Другие вопросы по тегам