我正在sql server中创建临时表。我成功创建了临时表,但当我尝试查看数据时,它显示为INVALID OBJECT NAME。 任何人都可以告诉敌人临时表存在多长时间? 如果我以userid - devloper和pwd = 0999登录到sql server,而另一个人也登录到具有相同凭据的sql server,这个临时表将被删除吗? 我的sql如下:
SELECT net_node_model.SYS_ID, net_node_model.NODE, mst_temp_equation.TEMP_ID,
mst_temp_equation.EQ_ID
INTO ##NT_MASTER_TEMP_EQUATION
FROM mst_temp_equation INNER JOIN
net_node_model ON mst_temp_equation.TEMP_ID = net_node_model.TEMP_ID
GROUP BY net_node_model.SYS_ID, net_node_model.NODE, mst_temp_equation.TEMP_ID,
mst_temp_equation.EQ_ID, mst_temp_equation.EQ_NAME,
mst_temp_equation.EQ_TYPE, mst_temp_equation.[OBJECT],
mst_temp_equation.VAR_TYPE, mst_temp_equation.VAR_NAME,
mst_temp_equation.VAR_SUBSET, mst_temp_equation.VAR_SET,
mst_temp_equation.RHS_RELN, mst_temp_equation.RHS_OBJECT,
mst_temp_equation.RHS_VAR_SET, mst_temp_equation.RHS_VAR_SUBSET,
mst_temp_equation.RHS_VAR_TYPE, mst_temp_equation.RHS_VAR_NAME,
mst_temp_equation.EQ_TP_OFFSET, mst_temp_equation.RHS_TP_OFFSET,
mst_temp_equation.RETAIN, mst_temp_equation.TIME_PRD,
mst_temp_equation.EQ_VAR_SUBTYPE, mst_temp_equation.RHS_VAR_SUBTYE;
答案 0 :(得分:19)
如果您使用的是常规临时表#table
,除了创建它之外的任何其他会话都不会显示它。该会话结束后,该表将被删除。
如果您使用的是全局临时表##table
,则其他会话可以看到它。
来自MSDN - CREATE TABLE
,temporary tables
下:
当创建表的会话结束且所有其他任务已停止引用它们时,将自动删除全局临时表。
答案 1 :(得分:0)
您是说您已经创建了## NT_MASTER_TEMP_EQUATION表,现在正在尝试插入吗?如果是这样,请使用语法INSERT INTO ##NT_MASTER_TEMP_EQUATION SELECT ...
而不是您拥有的语法。
SELECT ... INTO ##temp FROM ...
用于创建表并填充它。
此外,您在,
列表末尾(在关键字SELECT
之前)有一个流氓INTO
。这应该被删除。
答案 2 :(得分:0)
如果这是您使用的确切查询,那么我认为您在第一行可能有语法错误,看起来在关键字INTO
之前有一个额外的逗号
...mst_temp_equation.EQ_ID, INTO ##NT_MASTER_TEMP_EQUATION
^
不确定这是否导致INVALID OBJECT NAME错误
答案 3 :(得分:0)
在这里您似乎已经创建了全局临时表。请注意,当您希望结果集对所有其他会话可见时,全局临时表很有用。无需设置权限。任何人都可以从表中插入值,修改或检索记录。还要注意,任何人都可以删除表。
会话断开连接后,这些表将自动删除。