CREATE DATABASE не работает с использованием VSDBCMD
При попытке развернуть проект базы данных VS2010 с помощью инструмента VSDBCMD я получаю следующую ошибку:
SQL01268 .Net SqlClient Data Provider: Msg 5133, Level 16, State 1, Line 1 Directory lookup for the file "D:\MSSQL10_50\MSSQL10_50.MSSQLSERVER\MSSQL\Data\Data.mdf" failed with the operating system error 21(failed to retrieve text for this error. Reason: 1815).
SQL01268 .Net SqlClient Data Provider: Msg 1802, Level 16, State 1, Line 1 CREATE DATABASE failed. Some file names listed could not be created. Check related errors.
Однако, если я возьму сценарий SQL, сгенерированный VSDBCMD, и запусту его в SQL Management Studio, он будет работать нормально. Точно так же я могу создать БД вручную в Mgt Studio.
"Ошибка 21 операционной системы", по-видимому, Device Not Ready, но мне это кажется ложным... Все пути к папкам верны, и разблокировка защиты папок не решает проблему (например, "все"> полный контроль), Также нет ошибок в журнале SQL или в программе просмотра событий на сервере.
Чем отличается запуск VSDBCMD в командной строке от запуска одного и того же сценария SQL через Management Studio?
Любые идеи очень приветствуются!
Крис
2 ответа
Согласно моим собственным комментариям, эта ошибка была из-за того, что диск на самом деле не существовал.
Если вы создаете базу данных с vsdbcmd
на сервере, основанном на dbschema, было бы неплохо установить путь к данным и файлам журналов.
Чтобы изменить путь к журналу в вашем файле.dbschema:
<Element Type="ISql90File" Name="[YOUR_DATABASE_NAME_Data]">
<Property Name="FileName" Value="E:\YOUR DATA FOLDER\$(DatabaseName)_Data.MDF" />
<Element Type="ISql90File" Name="[YOUR_DATABASE_NAME_Log]">
<Property Name="FileName" Value="E:\YOUR LOGS FOLDER\$(DatabaseName)_Log.LDF" />
затем импортируйте его на Sql Server с помощью командной строки:
CD\
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VSTSDB\Deploy\vsdbcmd.exe" /a:Deploy
/cs:"Server=YOUR_SERVER\YOUR_INSTANCE;User Id=YOUR_USER;Password=YOUR_PASS;Pooling=false"
/dsp:Sql /dd+ /model:"C:\FOLDER\YOUR_DBSCHEMA_FILE.dbschema"
/p:TargetDatabase="YOUR_DATABASE_NAME"
Более подробная информация о vsdbcmd: http://msdn.microsoft.com/en-us/library/dd193283.aspx