CREATE DATABASE не работает с помощью VSDBCMD - PullRequest
0 голосов
/ 05 сентября 2011

При попытке развернуть проект базы данных 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 ]

1 голос
/ 07 ноября 2011

Согласно моим собственным комментариям, эта ошибка была из-за того, что диск на самом деле не существовал.

0 голосов
/ 06 июня 2014

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

Чтобы изменить путь к журналу в вашем файле .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

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