sp_tempdb 允许用户:
创建和管理临时数据库组。
将用户或应用程序绑定到 default 或其它临时数据库组,或绑定到特定的本地临时数据库。
管理到本地临时数据库和临时数据库组的绑定。
这些绑定存储在 master 数据库的 sysattributes 表中。
sp_tempdb 提供用于维护 sysattributes 中与多个临时数据库相关的绑定的绑定接口。
sp_tempdb [
[{"create" | "drop"}, "<groupname>"] |
[{"add" | "remove"}, "<tempdbname>", "<groupname>"] |
[{"bind", "<objtype>", "<objname>", "<bindtype>", "<bindobj>"
[, "<scope>", "<hardness>"]} |
{"unbind", "<objtype>", "<objname>"[, "<scope>"] "<instance_name>"}] |
["unbindall_db", "<tempdbname>"] |
[show[, "all" | "gr" | "db" | "login" | "app"[, "<name>"]] |
[who, "<dbname>"]
[help]]
create
创建 default 临时数据库组。
drop
删除临时数据库组。
<groupname>
是临时数据库组的名称。
add
将临时数据库添加到 default 临时数据库组中。
remove
从 default 临时数据库组中删除临时数据库。
<tempdbname>
是要添加或删除的临时数据库的名称。对于 Cluster Edition,<tempdbname> 必须为本地用户临时数据库。
bind
将登录名和应用程序绑定到临时数据库或 default 临时数据库组。
unbind
解除登录名和应用程序与临时数据库或 default 临时数据库组之间的绑定。
<objtype>
是对象类型。有效值包括:
值不区分大小写。
<objname>
是要绑定或解除绑定的对象的名称。
<bindtype>
是绑定类型。有效值包括:
值不区分大小写。
<bindobj>
是要绑定的对象的名称。视 <bindtype> 而定,该对象为一个组或一个数据库。
<scope>
NULL。
<instance_name>
在集群环境中 – 是拥有要解除绑定的本地临时数据库的实例的名称。此选项仅适用于 Cluster Edition。
<hardness>
hardness – 为 hard、soft 或 NULL。缺省值为 soft。将 <hardness> 的值设置为 hard 时,如果未能按照绑定指派临时数据库,将导致登录失败。
将其值设置为 soft 时,此类故障会导致从缺省组中指派临时数据库或指派本地系统临时数据库。
unbindall_db
删除给定的临时数据库的所有登录名绑定和应用程序绑定。它不会删除任何“数据库到组”成员关系。使用此选项时,需要指定 <tempdbname> 变量。
此操作不会影响活动会话的现有指派。
show
显示 sysattributes 表中存储的有关现有组、组成员、登录帐户和应用程序绑定和指派到给定数据库的活动会话的信息。其值包括:
<name> 选项指定为“default”,sp_tempdb show 都会显示所有绑定到 default 临时数据库组的临时数据库。
<name>,则只会输出数据库 <name> 的“数据库与组”的成员关系。
<name>,则只会输出登录名 <name> 的绑定。
<name>,则只会输出应用程序 <name> 的绑定。
> 注意
tempdb 始终属于 default 数据库组。
who
显示所有指派到给定临时数据库的活动会话。使用 who 参数时,必须使用以下参数:
<dbname> – 是临时数据库的名称。如果为 <dbname> 提供的值不是临时数据库名称,则 sp_tempdb who 虽然会执行,但不会报告任何绑定到该数据库的活动会话。
如果 system_view 设置为 cluster,则会检查集群的所有活动会话。如果 system_view 设置为 instance,则会检查当前实例上处于活动状态的会话
可以从集群中的任何实例上执行此命令。
help
显示用法信息。执行 sp_tempdb 而不指定命令与执行 sp_tempdb "help" 是等效的。
将 mytempdb1 添加到 default 组:
sp_tempdb "add", "mytempdb1", "default"
从 default 组中删除 mytempdb1:
sp_tempdb "remove", "mytempdb1", "default"
将登录名“sa”绑定到 default 组:
sp_tempdb "bind", "lg", "sa", "GR", "default"
在此示例中,objtype 的值为 login_name。可用 lg 或 LG 替代 login_name。
在此示例中,bindtype 的值为 group。可用 gr 或 GR 替代 group。
将上例中登录名“sa”的绑定从 default 组更改为 mytempdb1:
sp_tempdb "bind", "lg", "sa", "DB", "mytempdb1"
在此示例中,bindtype 的值为 database。可用 db 或 DB 替代 database。
将 isql 绑定到 mytempdb1:
sp_tempdb "bind", "ap", "isql", "DB", "mytempdb1"
在此示例中,objtype 的值为 application_name。可用 ap 或 AP 替代 application_name。
将上例中 isql 的绑定从 mytempdb1 更改为 default 组:
sp_tempdb "bind", "ap", "isql", "GR", "default"
删除登录名“sa”和应用程序“isql”的绑定。
sp_tempdb "unbind", "lg", "sa"
sp_tempdb "unbind", "ap", "isql"
删除 mytempdb1 数据库的所有登录名和应用程序绑定:
sp_tempdb "unbindall_db", "mytempdb1"
演示 sp_temp show 命令。我们选择了该命令的一些不同用法,并显示了经删节的示例输出。
sp_tempdb show
Temporary Database Groups
-------------------------------
default
Database GroupName
------------------------------- ----------------
tempdb default
mytempdb default
mytempdb1 default
mytempdb2 default
mytempdb3 default
Login Application Group Database Hardness
------- ------------- -------- ----------- --------
NULL isql default NULL SOFT
sa NULL NULL mytempdb3 HARD
显示 default 临时数据库组:
sp_tempdb show, "gr"
<h2>Temporary Database Groups</h2>
default
显示绑定到 default 组的所有临时数据库组的名称:
sp_tempdb show, "gr", "default"Member Databases
-------------------------------
tempdb
mytempdb
mytempdb1
mytempdb2
mytempdb3
显示所有“数据库与组”的成员关系:
sp_tempdb show, "db"
Database Group
--------------------- ----------------
tempdb default
mytempdb default
mytempdb1 default
mytempdb2 default
mytempdb3 default
显示 mytempdb1 数据库的所有“数据库与组”的成员关系。
sp_tempdb show, "db", "mytempdb1"
Database Group
--------------------- ----------------
mytempdb1 default
显示登录名不为 NULL 的所有登录名绑定:
sp_tempdb show, "login"
Login Application Group Database Hardness
------- ------------- ------- ----------- --------
sa NULL NULL mytempdb3 HARD
显示指派到系统 tempdb 的所有活动会话:
sp_tempdb who, "tempdb"
spid loginame
------ ------------------------------
2 NULL
3 NULL
4 NULL
5 NULL
6 NULL
7 NULL
8 NULL
显示指派到用户创建的临时数据库 mytempdb3 的所有活动会话:
sp_tempdb who, "mytempdb3"
spid loginame
------ ------------------------------
17 sa
显示用法信息:
sp_tempdb help
Usage:
sp_tempdb 'help'
sp_tempdb 'create', <groupname>
sp_tempdb 'drop', <groupname>
sp_tempdb 'add', <tempdbname>, <groupname>
sp_tempdb 'remove', <tempdbname>, <groupname>
sp_tempdb 'bind', <objtype>, <objname>, <bindtype>, <bindobj>, <scope>,
<hardness>
sp_tempdb 'unbind', <objtype>, <objname>, <scope>
sp_tempdb 'unbindall_db', <tempdbname>
sp_tempdb 'show', <command>, <name>
sp_tempdb 'who', <dbname>
<objtype> = ['LG' ('login_name') | 'AP' ('application_name')];
<bindtype> =['GR' ('group') | 'DB' ('database')]
<hardness> = ['hard' | 'soft']
<command> = ['all' | 'gr' | 'db' | 'login' | 'app']
显示所有临时数据库以及这些临时数据库所属的组的名称:
<h2>create temporary database mytempdb</h2>
CREATE DATABASE: allocating 1536 logical pages (3.0 megabytes) on disk 'master'.|
<h2>create temporary database mytempdb1</h2>
CREATE DATABASE: allocating 1536 logical pages (3.0 megabytes) on disk 'master'.
<h2>sp_tempdb 'add', mytempdb,'default'</h2>
(return status = 0
<h2>sp_tempdb show, db</h2>
<h2>Database Group</h2>
tempdb default
mytempdb default
mytempdb1
(3 rows affected)
(return status = 0)
使用 sp_tempdb 时,还存在一些其它注意事项:
- 要获得所有临时数据库的名称,请执行 sp_tempdb 'show'。
- 将每个临时数据库名称传递给:sp_tempdb 'who', <tempdbname>。
在 SAP ASE 15.0 版及更高版本中,可以通过执行 sp_who 获得相同的输出。
<groupname> 变量:
- 必须是有效的标识符
- 不能已经存在
default 组是系统生成的组,tempdb 始终属于该组。如果执行了以下操作,则 default 组已经存在:
- 使用包含此功能的 SAP ASE 服务器进行了升级,或
- 创建了新的主设备。
如果 default 组不存在,可以使用以下命令创建该组:
sp_tempdb create, "default"
如果 default 组已经存在,尝试创建该组时将出现一条错误消息。
<tempdbname> 添加到属于 default 临时数据库组的数据库的集合中后,<tempdbname> 将可用于该组内的循环指派。
> 注意
如果 <tempdbname> 尚不在 SAP ASE 服务器中可用临时数据库的全局列表内,sp_tempdb add 将失败
用户创建的临时数据库无需属于 default 临时数据库组。系统 tempdb 隐式属于 default 组。
如果尝试将某个已经属于 default 临时数据库组的临时数据库添加到该组,将出现一条错误消息,而且 sysattributes 中不会发生任何更改。