作者On1earth (小淺)
看板Database
標題[SQL ] MSSQL IF的問題
時間Wed Aug 21 22:17:38 2013
DB是MSSQL 2008
請問各位大大,
我想先判斷Db1這個資料庫是否存在,存在的話就將它刪除,
我將SSMS產生的刪除資料庫指令放到BEGIN...END區塊中,
IF EXISTS (SELECT * FROM sys.databases WHERE name = N'Db1')
BEGIN
EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'Db1'
GO
USE [master]
GO
DROP DATABASE [Db1]
GO
END
但是執行後會有錯誤,請問這個地方要怎麼調整呢?
謝謝。
訊息 102,層級 15,狀態 1,行 3
接近 'Db1' 之處的語法不正確。
訊息 3701,層級 11,狀態 1,行 1
無法 卸除 資料庫 'Db1',因為它不存在或您沒有權限。
訊息 102,層級 15,狀態 1,行 1
接近 'END' 之處的語法不正確。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.243.188.218
推 Adonisy:msdb.dbo.sp_delete_database_backuphistory你一定要嗎? 08/22 00:12
→ On1earth:那個是SSMS產生的,msdn寫說是刪除備份及還原記錄資料表 08/22 00:40
→ On1earth:我也不確定要不要耶 08/22 00:40
推 TeemingVoid:請將 BEGIN..END 裏頭的那些 GO 去掉。 08/22 01:36
→ TeemingVoid:GO 代表一個批次的結尾,結果,第一個 GO 以後的都變 08/22 01:37
→ TeemingVoid:成另一回事了。 08/22 01:37
→ On1earth:謝謝T大,所以如果這樣寫會變成IF...EXEC一段 08/22 19:07
→ On1earth:USE...是另外一段指令的意思嗎? 08/22 19:08
推 TeemingVoid:是的。 08/22 21:15
推 Adonisy:其實應該只是沒權力,你的帳號沒有 sysdb msdb的權力 08/23 11:07
→ On1earth:了解,謝謝。原因是像T大所說,去掉GO就可以了 08/23 23:42