Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为临时表指定架构_Sql_Sql Server_Sql Server 2005_Tsql - Fatal编程技术网

Sql 为临时表指定架构

Sql 为临时表指定架构,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,我习惯于只使用哈希/数字符号创建临时表,如下所示: CREATE TABLE #Test ( [Id] INT ) 但是,我最近遇到了在创建临时表时指定架构名称的存储过程代码,例如: CREATE TABLE [dbo].[#Test] ( [Id] INT ) 你有什么理由要这么做吗?如果只指定用户的默认模式,是否会有任何区别?这是指本地数据库或tempdb数据库中的[dbo]模式吗?如果指定用户默认模式,则不会有任何区别,但如果用户默认模式更改,则会尝试将临时表保留在db

我习惯于只使用哈希/数字符号创建临时表,如下所示:

CREATE TABLE #Test
(
    [Id] INT
)
但是,我最近遇到了在创建临时表时指定架构名称的存储过程代码,例如:

CREATE TABLE [dbo].[#Test]
(
    [Id] INT
)

你有什么理由要这么做吗?如果只指定用户的默认模式,是否会有任何区别?这是指本地数据库或tempdb数据库中的
[dbo]
模式吗?

如果指定用户默认模式,则不会有任何区别,但如果用户默认模式更改,则会尝试将临时表保留在dbo模式中


Temp表是在tempdb中创建的,因此这意味着您需要在tempdb中维护模式,并且没有任何好处。

如果您在tempdb上创建模式,并使用该默认模式将用户映射到tempdb,则运行
create TABLE#test(v INT)
会将表创建为“dbo.#test”。尝试在dbo以外的模式下创建临时表将忽略您指定的模式,并在dbo模式中创建它。所以
创建表虚拟。#test(vint)
也将创建“dbo.#test”。