2015-06-21 2 views
1

Я разработал приложение C#, подключающееся к базе данных SQL Server. Теперь я хочу протестировать приложение на клиентском ПК, и поэтому я написал сценарий базы данных и теперь хочу развернуть его на клиентском ПК.Запуск SQL-скрипта в SqlCmd с SQL Server Express

Клиентский компьютер работает под управлением SQL Server Express, однако SQL Server Management Studio не установлен, поэтому я решил использовать SqlCmd для выполнения сценария на локальном сервере ПК. Примечание. Когда я установил SQL Server Express, я установил имя экземпляра в MSSQLSERVER.

enter image description here

Проблема у меня есть с командой я печатаю:

-S SomePCName\MSSQLSERVER -i C:\CreateDBSql.sql 

Когда я запускаю команду, я получаю следующее сообщение:

enter image description here

Что я делаю неправильно?

+2

Вы указали имя базы данных в своем скрипте? else -d Steve

+0

Сценарий должен создать новую базу данных. Поэтому нет необходимости указывать имя базы данных. –

+0

Какова полная запущенная командная строка? Почему вы указали имя экземпляра? Имя экземпляра SQL Server Express по умолчанию является 'SQLExpress', но является' MSSQLServer' для других выпусков. Кроме того, что значит «ничего не происходит»? Как долго вы ждали? Существует таймаут соединения и тайм-аут команды, поэтому он не будет сидеть там навсегда. –

ответ

1

Проблема заключается в том, что вы не используете SQLCMD правильно. Параметры командной строки (или «флаги» или «переключатели») необходимо ввести в командной строке ;-). Попробуйте следующее (обратите внимание на использование (local)):

SQLCMD -S (local)\MSSQLSERVER -i C:\CreateDBSql.sql 

UPDATE:
кажется, что с MSSQLSERVER это имя по умолчанию «Экземпляр по умолчанию», он зарезервирован и не может быть использована в связи строка явно. В этом случае вы можете попробовать следующее:

SQLCMD -S (local) -i C:\CreateDBSql.sql 

Если это не сработает, то это может быть лучше переустановить SQL Server Express, используя другое имя экземпляра: либо предпочтительное имя экземпляра по умолчанию для SQL Server Express (то есть SQLExpress) или что-то, что не является ни SQLExpress, ни MSSQLSERVER.

+0

Будет ли это работать для экспресс-доставки? Я слышал однажды, что экспресс использует (локальный) с некоторым дополнительным текстом? Спасибо! –

+0

@MarnusSteyn Попробуйте, и вы увидите ;-). Да, это работает, и я попробовал это сам. Вы путаетесь с соответствующим продуктом: ** SQL Server Express LocalDB **, который использует '(localdb) \ InstanceName'. '(local)' является предпочтительным синтаксисом для обращения к локальной машине для экземпляров не LocalDB. –

+0

Пробовал и обновил OP. По крайней мере, я на шаг впереди от того места, где был. Теперь я получаю ответ от сервера, но он жалуется. –

Смежные вопросы