2015-06-21 158 views
1

我開發了一個連接到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'。另外,你是什麼意思「沒有任何反應」?你等多久了?有一個連接超時和命令超時,所以它不會永遠坐在那裏。 –

回答

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。至少我從我的位置前進了一步。我現在從服務器獲得響應,但它是抱怨。 –