Ошибка развертывания проекта базы данных VS2010 SQL01268 Ошибка поиска каталога - PullRequest
4 голосов
/ 31 августа 2010

Ошибка развертывания базы данных 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: Сообщение 1802, Уровень 16, Состояние 1, Строка 1, CREATE DATABASE не удалось.Некоторые имена файлов не могут быть созданы.Проверьте связанные ошибки.

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

Фактический путь находится здесь:

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 ]

10 голосов
/ 03 сентября 2010

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

2 голосов
/ 02 сентября 2010

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

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

Возможно, проблема в том, что у вас нет указанного пути, может быть проблема.

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

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

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

1 голос
/ 02 сентября 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...