我想將文件/文件組添加到現有的數據庫,但我需要從變量中獲取路徑,因爲在完成此腳本時它會有所不同。當我在SQL Management Studio 2008 R2中檢查腳本時,它會在FILENAME = @Path
處返回錯誤。ALTER DATABASE/ADD FILE/VARIABLE FILENAME?
如何使用該變量?
腳本不會從命令行運行!
ALTER DATABASE [MyDB]
ADD FILEGROUP [MyDB_FileStream] CONTAINS FILESTREAM
GO
DECLARE @Path VARCHAR(MAX)
SET @Path = 'C:\whatEverIWantItToBe\ThisCouldChangeWithLogic\YouGetThePoint\'
ALTER DATABASE [MyDB]
ADD FILE
(NAME = 'MyDB_FileStream'
, FILENAME = @Path
)
TO FILEGROUP [MyDB_FileStream]
謝謝!我一直討厭動態SQL,因爲它在我看來似乎「逃脫」瞭解析錯誤......但也許它有其用途 – 2011-04-08 04:49:19
只要確保@Path來自可信來源,而不是小Bobby Tables http:// xkcd .com/327/ – SqlACID 2011-04-08 12:38:19
@SqlACID - 你可以傳入@Path變量,這會導致執行你不想要的語句?當你嘗試從客戶端執行存儲的proc(大概是因爲我們使用了一個變量)而不是從proc本身內部執行時,問題就出現了。假設對存儲的proc調用的調用進行了參數化,那麼可傳遞給@Path的內容不會被轉義或出錯? – Thomas 2011-04-08 15:59:47