2

tempdb数据库中的永久表是否有任何用例?永久我的意思是不使用# 或##,而是在tempdb 中创建一个真实的表。我知道重新启动 sql 服务会擦除 tempdb,但是这种做法会因为其他原因而不好吗?

我在问,因为我有一个用例,我需要一个临时表,但它将打开更多的 sql 连接跨度。

编辑:长期临时表中的实际数据是序列化文件,而不是基于排序规则或其他任何东西的数据

4

4 回答 4

2

为什么不在数据库中创建一个名为“temp”(或 Staging)的模式,并在该模式中创建长期存在的临时表。例如

create schema [temp] 
     authorization [dbo]

create table [temp].[MyTempTable]
(
   Id int,
   [name] varchar(50),
   ... SomeColumns ...
)

更新:响应您的额外信息,您可以使用FILESTREAM吗?(SQL Server 2008 及更高版本)

于 2012-02-20T10:46:53.230 回答
1

由于许多原因,这个想法并不好,例如 - 如果您的数据库和 tempdb(服务器)的排序规则不匹配 - 隐式字符串比较可能会失败

于 2012-02-20T10:52:54.763 回答
1

为什么它必须完全在 tempdb 上?除了发布的所有其他替代方案之外,为什么不创建一个共享数据库来保存该表?

于 2012-02-20T11:11:31.797 回答
1

我建议采用不同方法的主要原因是 tempdb 已经成为瓶颈,因为 SQL Server 对其进行了多次使用。我不建议找到另一个将东西插入 tempdb 的理由。

除此之外,tempdb 与任何其他位置一样好,还有一个额外的好处是,在服务重新启动后,您留在其中的任何内容都将被清除。

于 2012-02-20T13:39:21.407 回答