在tempdb 数据库中是否有永久表的用例?永久性我的意思是不使用#或##,而是在tempdb中创建一个真实的表。我知道重新启动sql服务会擦除tempdb,但这种做法会因为其他原因而变坏吗?
我问,因为我有一个用例,我需要一个临时表,但是这将是一个sql连接跨度的开放。
编辑:长生命临时表中的实际数据是序列化文件,而不是基于整理或其他任何内容的数据
答案 0 :(得分:2)
为什么不在数据库中创建名为“temp”(或Staging)的模式,并在该模式中创建长期临时表。 e.g。
create schema [temp]
authorization [dbo]
create table [temp].[MyTempTable]
(
Id int,
[name] varchar(50),
... SomeColumns ...
)
更新:为了回应您的额外信息,您可以使用FILESTREAM吗? (SQL Server 2008起)
答案 1 :(得分:1)
这个想法并不是很好,例如 - 如果您的数据库和tempdb(服务器)的排序规则不匹配 - 隐式字符串比较可能会失败
答案 2 :(得分:1)
为什么它必须完全在tempdb上? 除了发布的所有其他替代方案之外,为什么不创建一个共享数据库来保存此表?
答案 3 :(得分:1)
我建议采用不同方法的主要原因是因为tempdb已经成为瓶颈,因为SQL Server使用它的次数。我不建议找到将内容插入tempdb的另一个原因。
除此之外,tempdb与任何其他位置一样好,并且具有额外的好处,即在服务重新启动后,您留下的任何内容都将被清除。