【发布时间】:2021-02-09 16:33:12
【问题描述】:
我想使用 OLE DB 从源中获取数据。 使用 SQL 命令来获取。
我试图用 WITH 子句来设置它。有效。但是需要 更多时间 才能给出输出。
WITH Temp
AS
(
SELECT C.*
FROM DimCUSTOMER C
INNER JOIN DimSHOP S
ON C.CUST_ID = S.CUST_ID
)
SELECT *
FROM TEMP
WHERE ADDRESS IS NOT NULL
然后我在 SSMS 中使用 # 临时表进行了尝试。 与 with 子句相比,它给的时间更少。 SQL 代码如下。
SELECT C.*
INTO #Temp
FROM DimCUSTOMER C
INNER JOIN DimSHOP S
ON C.CUST_ID = S.CUST_ID
SELECT *
FROM #TEMP
WHERE ADDRESS IS NOT NULL
然后我在 SSIS 包 OLE DB Source 中设置此代码。 但是在其中设置 SQL 代码时出现错误。
【问题讨论】:
-
您可能应该只使用常规 sql 语句作为源,
select c.* from ... where c.address is not null- cte 或临时表需要什么?它纯粹与性能有关吗?向address字段添加索引可能会解决您的问题。如果一定要,使用sql任务创建,然后在数据流任务中引用。还要确保将连接的retainsameconnection属性设置为true。有关详细信息,请参阅此解决方案:stackoverflow.com/a/6160015/1073631 -
正在针对哪个版本的 sql server 运行查询?
标签: sql-server ssis msbi