小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
第三十一章 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