文章
姚 鑫 · 九月 30 阅读大约需 3 分钟

第三十一章 SQL命令 DROP DATABASE

第三十一章 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 CodeServer Disconnect Code值。
因此,删除并重新创建名称空间需要重新指定这些值。

示例

CREATE DATABASE DocTestDB ON DIRECTORY 'c:\InterSystems\IRIS142\mgr\DocTestDB'
DROP DATABASE DocTestDB RETAIN_FILES
00
1 0 0 12
Log in or sign up to continue