2014-10-16 31 views
2

我想創建一個數據庫,但我想,因爲我使用的實例名稱爲我的文件夾名稱,所以我寫了我的代碼讀取實例名稱不正確的語法爲:T-SQL錯誤:附近「+」

set @instancename = CONVERT(VARCHAR(50),SERVERPROPERTY ('InstanceName')) 
if @instancename IS NULL 
    begin 
    set @instancename= 'MSSQLSERVER' -- MSSQLSERVER if default instance 
    end 

declare @sql varchar(128) 

set @sql= 'CREATE DATABASE [DPO_MainDB] ON PRIMARY 
(NAME = N''DPO_MainDB_Data'', FILENAME= N''H:\'[email protected]+'\SQLData\DPO_MainDB_Data.MDF'', SIZE = 4MB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%) 
LOG ON 
(NAME = N''DPO_MainDB_Log'', FILENAME = N''G:\'[email protected]+'\SQLLogs\DPO_MainDB_Log.LDF'' , SIZE = 2048KB , MAXSIZE = UNLIMITED , FILEGROWTH = 10%) 
END' 
Exec(@sql) 

但我得到這個錯誤: '+'附近的語法不正確。

我嘗試了很多東西,但仍然有這個問題。我知道我可以使用+,因爲我以前使用它,但我不知道它有什麼問題:(我會感謝任何幫助!

回答

2

您將需要使用動態SQL做到這一點,所以你將創建SQL你想在一個變量來執行,然後該變量傳遞給EXEC因此,像:

set @sql = 'CREATE DATABASE [DPO_MainDB] ON PRIMARY 
(NAME = N''MainDB_Data'', FILENAME= N''H:\'[email protected]+'\SQLData\DPO_MainDB_Data.MDF'', SIZE = 4MB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%) 
LOG ON 
(NAME = N''MainDB_Log'', FILENAME = N''G:\'[email protected]+'\SQLLogs\DPO_MainDB_Log.LDF'' , SIZE = 2048KB , MAXSIZE = UNLIMITED , FILEGROWTH = 10%) 
END' 

EXEC(@sql) 

您將能夠引用變量在@sql作業請注意,我已經逃脫'字符''沒有問題。裏面的@sql變量。

+0

謝謝你,我試過了......現在我看到這個錯誤:''''附近語法不正確r exec(sql)...抱歉,我很初學t-sql – faranak777 2014-10-16 18:43:31

+0

這是SQL Server嗎? – 2014-10-16 18:48:31

+0

是的,它是sql服務器 – faranak777 2014-10-16 18:49:28