简体   繁体   English

SQL Server 2008R2 - perm表中的数据,但不在临时表中

[英]SQL Server 2008R2 - data in perm table but not in temp table

I am not sure why this is happening... the actual table has data yet when trying to pull data from the actual table into the temp table, there is no data... 我不确定为什么会发生这种情况......实际的表还有数据,当试图将数据从实际表中提取到临时表时,没有数据......

IF object_id('DI_Temp.di.Holly') IS NOT NULL 
   DROP TABLE DI_Temp.di.Holly

CREATE TABLE DI_Temp.di.Holly
(
Toys varchar(20)
,Meals varchar(100)
,Breaks varchar(20)
)

Insert DI_Temp.DI.Holly 
   Select 
      Toys, Meals, Breaks
   from toysarefun.dbo.crazytoys (nolock)
   where status = 'active'

--Select * from di_temp.di.holly

IF OBJECT_ID('tempdb.dbo.#Toys') IS NOT NULL 
   DROP TABLE tempdb.dbo.#Toys

SELECT * 
INTO #Toys
FROM DI_Temp.di.Holly (NOLOCK) 
WHERE Toys like 'H*'

Select *
from tempdb.dbo.#Toys

Thanks :) 谢谢 :)

Firstly, you are not comparing apples with apples. 首先,你不是在比较苹果和苹果。 Your test select should include the SAME filter as the INSERT..SELECT query 您的测试选择应包括SAME过滤器作为INSERT..SELECT查询

Secondly, it's best to minimize the time spent on SELECT.. INTO . 其次,最好尽量减少在SELECT.. INTO花费的时间SELECT.. INTO Better to create the temporary table first. 最好先创建临时表。

Thirdly, don't use tempdb.dbo.#Toys . 第三,不要使用tempdb.dbo.#Toys # is implicitly in tempdb. #隐含在tempdb中。 You will get this warning anyway 无论如何你会得到这个警告

Database name 'tempdb' ignored, referencing object in tempdb. 数据库名称'tempdb'被忽略,引用tempdb中的对象。

The changed portions: 改变的部分:

-- uncomment first to check if there are any matches
--Select * from di_temp.di.holly WHERE Toys like 'H*'

IF OBJECT_ID('tempdb.dbo.#Toys') IS NOT NULL 
DROP TABLE #Toys;

SELECT *
INTO #Toys
FROM DI_Temp.di.Holly (NOLOCK) 
WHERE 1=0;

INSERT INTO #Toys
SELECT * 
FROM DI_Temp.di.Holly (NOLOCK) 
WHERE Toys like 'H*';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM