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

时间:2013-05-16 22:30:52

标签: sql sql-server-2008-r2

我不确定为什么会发生这种情况......实际的表还有数据,当试图将数据从实际表中提取到临时表中时,没有数据......

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

谢谢:)

1 个答案:

答案 0 :(得分:4)

首先,你不是在比较苹果和苹果。您的测试选择应包括SAME过滤器作为INSERT..SELECT查询

其次,最好尽量减少在SELECT.. INTO上花费的时间。最好先创建临时表。

第三,不要使用tempdb.dbo.#Toys。 #隐含在tempdb中。无论如何你都会得到这个警告

  

忽略数据库名称'tempdb',引用tempdb中的对象。

更改的部分:

-- 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*';