小编Raf*_*ski的帖子

sys.dm_sql_referenced_entities 在加入临时表时无法提供使用的列列表

我想我需要一些帮助,因为我没有想法。

在我的数据库中,我有一个像这样的简单表:

CREATE TABLE dbo.Invoices 
( 
        CashDiscounts MONEY, 
        Cost MONEY 
) 
GO 
Run Code Online (Sandbox Code Playgroud)

以及在 SELECT 上下文中使用此表的存储过程:

CREATE PROCEDURE Reporting.pLoadTest 
AS 
BEGIN 
        CREATE TABLE #t ( Test INT ); 

        SELECT  
                  Invoice.[CashDiscounts]       AS [CashDiscounts] 
                , Invoice.[Cost]                        AS [Cost] 
        FROM dbo.Invoices AS Invoice 
        LEFT OUTER JOIN #t -- if you remove this join, dm_sql_referenced_entities should return also CashDiscounts and Cost attributes
        ON 1=1 

END 
GO
Run Code Online (Sandbox Code Playgroud)

现在,我遇到的问题如下:我正在使用系统函数sys.dm_sql_referenced_entities来获取Reporting.pLoadTest使用的列列表

SELECT * 
FROM sys.dm_sql_referenced_entities ('Reporting.pLoadTest', 'OBJECT') 
Run Code Online (Sandbox Code Playgroud)

我希望这个函数的结果是:

  1. dbo.Invoices
  2. dbo.Invoices.CashDiscounts
  3. dbo.Invoices.Cost

但是,当我加入 temp #t …

sql-server metadata sql-server-2012 tempdb temporary-tables

7
推荐指数
1
解决办法
884
查看次数