作者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
1F:推 Adonisy:msdb.dbo.sp_delete_database_backuphistory你一定要吗? 08/22 00:12
2F:→ On1earth:那个是SSMS产生的,msdn写说是删除备份及还原记录资料表 08/22 00:40
3F:→ On1earth:我也不确定要不要耶 08/22 00:40
4F:推 TeemingVoid:请将 BEGIN..END 里头的那些 GO 去掉。 08/22 01:36
5F:→ TeemingVoid:GO 代表一个批次的结尾,结果,第一个 GO 以後的都变 08/22 01:37
6F:→ TeemingVoid:成另一回事了。 08/22 01:37
7F:→ On1earth:谢谢T大,所以如果这样写会变成IF...EXEC一段 08/22 19:07
8F:→ On1earth:USE...是另外一段指令的意思吗? 08/22 19:08
9F:推 TeemingVoid:是的。 08/22 21:15
10F:推 Adonisy:其实应该只是没权力,你的帐号没有 sysdb msdb的权力 08/23 11:07
11F:→ On1earth:了解,谢谢。原因是像T大所说,去掉GO就可以了 08/23 23:42