第三十一章 SQL命令 DROP DATABASE
删除数据库(命名空间)。
大纲
DROP DATABASE dbname [RETAIN_FILES]
参数
dbname
- 要删除的数据库(命名空间)的名称。RETAIN_FILES
- 可选-如果指定,则不会删除物理数据库文件(IRIS.DAT
文件)。默认情况下,删除.dat
文件以及命名空间和其他数据库实体。
描述
DROP DATABASE
命令删除命名空间及其关联的数据库。
指定的dbname
是包含相应数据库文件的命名空间和目录的名称。指定dbname
作为标识符。命名空间名称不区分大小写。如果指定的DBNAME
命名空间不存在, IRIS将发出SQLCODE-340
错误。
DROP DATABASE
命令是一个特权操作。
在使用DROP DATABASE
之前,必须以%Admin_Manage
资源的用户身份登录。
用户还必须拥有用于例程和全局数据库定义的资源的READ
权限。
如果不这样做,将导致SQLCODE -99
错误(权限冲突)。
使用$SYSTEM.Security.Login()
方法为用户分配适当的权限:
DO $SYSTEM.Security.Login("_SYSTEM","SYS")
&sql( )
必须具有%Service_Login:Use
权限才能调用$SYSTEM.Security.Login
方法。
不管权限如何,DROP DATABASE
都不能用于删除系统命名空间。尝试这样做会导致SQLCODE-342
错误。
DROP DATABASE
不能用于删除当前正在使用或连接到的命名空间。尝试这样做会导致SQLCODE-344
错误。
还可以使用管理门户删除命名空间。依次选择System Administration、Configuration、System Configuration、Namespaces以列出现有的Namespace
。单击要删除的命名空间的删除按钮。
RETAIN_FILES
如果指定此选项,则保留物理文件结构;删除数据库及其关联的命名空间。执行此操作后,后续尝试使用DBNAME
将导致以下结果:
DROP DATABASE
不带RETAIN_FILES
无法删除此物理文件结构。相反,它会导致SQLCODE-340
错误(未找到数据库)。DROP DATABASE WITH RETAIN_FILES
还会导致SQLCODE-340
错误(找不到数据库)。CREATE DATABASE
无法创建同名的新数据库。相反,它会导致SQLCODE-341
错误(无法为数据库创建数据库文件)。- 尝试使用此命名空间会导致
<NAMESPACE>
错误。
服务器初始化和断开代码
服务器初始化代码和服务器断开代码可以通过$SYSTEM.SQL.Util.SetOption("ServerInitCode",value)
和$SYSTEM.SQL.Util.SetOption("ServerDisconnectCode",value)
方法分配给命名空间。
可以使用相应的$SYSTEM.SQL.Util.GetOption()
方法选项来确定当前值。
使用DROP DATABASE
或其他接口删除命名空间,将删除这些Server Init Code
和Server Disconnect Code
值。
因此,删除并重新创建名称空间需要重新指定这些值。
示例
CREATE DATABASE DocTestDB ON DIRECTORY 'c:\InterSystems\IRIS142\mgr\DocTestDB'
DROP DATABASE DocTestDB RETAIN_FILES