SQL Server里的临时表放在那儿?

已举报 回答
SQL Server里的临时表放在那儿?
问在线客服
扫码问在线客服
  • 回答数

    8

  • 浏览数

    1,417

8个回答 默认排序
  • 默认排序
  • 按时间排序

已采纳
临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。

临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例断开连接时被删除。全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。

例如,如果创建了 employees 表,则任何在数据库中有使用该表的安全权限的用户都可以使用该表,除非已将其删除。如果数据库会话创建了本地临时表 #employees,则仅会话可以使用该表,会话断开连接后就将该表删除。如果创建了 ##employees 全局临时表,则数据库中的任何用户均可使用该表。如果该表在您创建后没有其他用户使用,则当您断开连接时该表删除。如果您创建该表后另一个用户在使用该表,则 SQL Server 将在您断开连接并且所有其他会话不再使用该表时将其删除。
取消 评论
因为没选择任何操作才会这样,你要选择一个操作才会显示的呀,当你点检视表结构,或检视数据时才会有面板显示,或显示SQL查询分析器,你点左上角那个新建查询就不会窗口空黑了
取消 评论
表保存在你的数据库里,再次打开的时候,表就存在
取消 评论
既然想实现级联删除,那首先得有外键依赖,然后你右键有关联的表,就会出现删除的设置,其中级联删除的属性设置为true即可
取消 评论
DELETE FROM Table1
WHERE EXISTS
(
SELECT TOP 1 1 FROM Table2 b
WHERE Table1 .F1 = b.F1 AND Table1 .F2 = b.F2 AND Table1 .F23= b.F3 AND Table1 .F4 = b.F4 AND Table1 .F5 = b.F5
)
取消 评论
DML 触发器语句使用两种特殊的表:删除的表和插入的表。SQL Server 2005 会自动创建和管理这两种表。您可以使用这两种驻留内存的临时表来测试特定数据修改的影响以及设置 DML 触发器操作条件。但不能直接修改表中的数据或对表执行数据定义语言 (DDL) 操作,例如 CREATE INDEX。

删除的表用于存储 DELETE 和 UPDATE 语句所影响的行的副本。在执行 DELETE 或 UPDATE 语句的过程中,行从触发器表中删除,并传输到删除的表中。删除的表和触发器表通常没有相同的行。

插入的表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在执行插入或更新事务过程中,新行会同时添加到 inserted 表和触发器表中。插入的表中的行是触发器表中的新行的副本。

更新事务类似于在删除操作之后执行插入操作;首先,旧行被复制到删除的表中,然后,新行被复制到触发器表和插入的表中。

在设置触发器条件时,应使用激发触发器的操作相应的插入的和删除的表。尽管在测试 INSERT 时引用删除的表或在测试 DELETE 时引用插入的表不会导致任何错误,但在这些情况下,这些触发器测试表将不包含任何行。
取消 评论
delete table1 where f1 in(select f1 from table2)
取消 评论
1、DBCC PINTABLE 不会导致将表读入到内存中。当表中的页由普通的 Transact-SQL 语句读入到高速缓存中时,这些页将标记为内存驻留页。当 SQL Server 需要空间以读入新页时,不会清空内存驻留页。SQL Server 仍然记录对页的更新,并且如有必要,将更新的页写回到磁盘。然而,在使用 DBCC UNPINTABLE 语句使该表不驻留之前,SQL Server 在高速缓存中一直保存可用页的复本。DBCC PINTABLE 最适用于将小的、经常引用的表保存在内存中。将小表的页一次性读入到内存中,将来对其数据的所有引用都不需要从磁盘读入。注意 DBCC PINTABLE 可以提供性能改进,但是使用时务必小心。如果驻留大表,则该表在开始时会使用一大部分高速缓存,而不为系统中的其它表保留足够的高速缓存。如果所驻留的表比高速缓存大,则该表会填满整个高速缓存。sysadmin 固定服务器角色的某个成员必须关闭而后重新启动 SQL Server,然后使表不驻留。驻留太多的表和驻留比高速缓存大的表会产生同样的问题。 示例:
Declare @db_id int, @tbl_id intUse DATABASE_NAMESet @db_id = DB_ID('DATABASE_NAME')Set @tbl_id = Object_ID('Department')DBCC pintable (@db_id, @tbl_id)可将表Department设置为驻留内存。
Declare @db_id int, @tbl_id intUse DATABASE_NAMESet @db_id = DB_ID('DATABASE_NAME')Set @tbl_id = Object_ID('Department')DBCC UNpintable (@db_id, @tbl_id)可将表Department取消设置为驻留内存。可以使用如下的SQL指令来检测执行情况:
Select ObjectProperty(Object_ID('Department'),'TableIsPinned')如果返回结果为1:则表示该表已经设置为驻留内存;0:则表示没有设置为驻留内存。2, SP_TableOption设置用户定义表的选项值。sp_tableoption可以用来打开桌上的文本,在文本行特征ntext或image列。
语法sp_tableoption [ @TableNamePattern = ] 'table' , [ @OptionName = ] 'option_name' , [ @OptionValue = ] 'value' 其中,'option_name' 有如下用法:pintable -- 默认,它标志着该表不再内存居民。启用时,将表标记为内存驻留(可将指定的表驻留内存)另外,table lock on bulk load, insert row lock, text in row等等可选值,因不涉及将表驻留内存,具体用法可以查询SQL Server Books Online.Value有如下用法:the option_name is enabled (true, on, or 1) or disabled (false, off, or 0)示例:
EXEC sp_tableoption 'Department','pintable', 'true'将数据表Department驻留内存
EXEC sp_tableoption 'Department','pintable', 'false'取消数据表Department驻留内存 可以使用如下的SQL指令来检测执行情况:
Select ObjectProperty(Object_ID('Department'),'TableIsPinned')如果返回结果为1:则表示该表已经设置为驻留内存;0:则表示没有设置为驻留内存。 3. Conclusions将数据表设置为驻留内存时,并没有实际将表读入内存中,直到该表从被检索。因此,可以使用如下SQL指令进一步将数据表Department驻留内存:
Select * From Department另外,可以使用如下SQL指令方便显示/检测数据库Database中所有设置为驻留内存的表:
SELECT * FROM INFORMATION_SCHEMA.Tables WHERE TABLE_TYPE = 'BASE TABLE' AND OBJECTPROPERTY(object_id(TABLE_NAME), 'TableIsPinned') 0
取消 评论
ZOL问答 > 相机 > 其他分类 > SQL Server里的临时表放在那儿?

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

扫码参与新品0元试用
晒单、顶楼豪礼等你拿

扫一扫,关注我们
提示

确定要取消此次报名,退出该活动?