[SQL ] MSSQL IF的問題

看板Database作者 (小淺)時間12年前 (2013/08/21 22:17), 編輯推噓4(407)
留言11則, 3人參與, 最新討論串1/1
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

08/22 00:12, , 1F
msdb.dbo.sp_delete_database_backuphistory你一定要嗎?
08/22 00:12, 1F

08/22 00:40, , 2F
那個是SSMS產生的,msdn寫說是刪除備份及還原記錄資料表
08/22 00:40, 2F

08/22 00:40, , 3F
我也不確定要不要耶
08/22 00:40, 3F

08/22 01:36, , 4F
請將 BEGIN..END 裏頭的那些 GO 去掉。
08/22 01:36, 4F

08/22 01:37, , 5F
GO 代表一個批次的結尾,結果,第一個 GO 以後的都變
08/22 01:37, 5F

08/22 01:37, , 6F
成另一回事了。
08/22 01:37, 6F

08/22 19:07, , 7F
謝謝T大,所以如果這樣寫會變成IF...EXEC一段
08/22 19:07, 7F

08/22 19:08, , 8F
USE...是另外一段指令的意思嗎?
08/22 19:08, 8F

08/22 21:15, , 9F
是的。
08/22 21:15, 9F

08/23 11:07, , 10F
其實應該只是沒權力,你的帳號沒有 sysdb msdb的權力
08/23 11:07, 10F

08/23 23:42, , 11F
了解,謝謝。原因是像T大所說,去掉GO就可以了
08/23 23:42, 11F
文章代碼(AID): #1I5Cm53l (Database)