使用SQL Server Express在SqlCmd中运行SQL脚本

问题描述:

我开发了一个连接到SQL Server数据库的C#应用​​程序。我现在希望在客户端PC上测试应用程序,因此我编写了数据库脚本,现在希望将其部署到客户端PC上。使用SQL Server Express在SqlCmd中运行SQL脚本

客户端PC正在运行SQL Server Express,但是未安装SQL Server Management Studio,因此我认为我会使用SqlCmd在PC的本地服务器上执行脚本。注意:当我安装SQL Server Express时,我将实例名称设置为MSSQLSERVER

enter image description here

我遇到的问题是,我键入命令:

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

当我运行的命令,我得到以下信息:

enter image description here

我做错了什么?

+2

您是否在脚本中指定了数据库名称?否则-d – Steve

+0

该脚本应该创建一个新的数据库。所以不需要指定数据库名称。 –

+0

您正在运行的完整命令行是什么?你为什么指定一个实例名称? SQL Server Express的默认实例名是'SQLExpress',但是对于其他版本则是'MSSQLServer'。另外,你是什么意思“没有任何反应”?你等多久了?有一个连接超时和命令超时,所以它不会永远坐在那里。 –

该问题主要表现为您未正确运行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。至少我从我的位置前进了一步。我现在从服务器获得响应,但它是抱怨。 –