Sql server 为什么返回存储过程的结果时没有结果?

Sql server 为什么返回存储过程的结果时没有结果?,sql-server,stored-procedures,temp-tables,openrowset,Sql Server,Stored Procedures,Temp Tables,Openrowset,在构建包括几个临时表和被调用然后被联合的存储过程的第一步中,我根据Philip Kelley的回答给出了第一个小步骤: …但称之为SP RockbottomMigrated不会带来任何回报;然而调用sp_ViewPriceMatrix_Variance_RockBottomRollup_Craftworks确实会返回记录。为什么会这样,因为到目前为止,这只是将从sp_ViewPriceMatrix_Variance_RockBottomRollup_Craftworks返回的一些数据填充到bas

在构建包括几个临时表和被调用然后被联合的存储过程的第一步中,我根据Philip Kelley的回答给出了第一个小步骤:

…但称之为SP RockbottomMigrated不会带来任何回报;然而调用sp_ViewPriceMatrix_Variance_RockBottomRollup_Craftworks确实会返回记录。为什么会这样,因为到目前为止,这只是将从sp_ViewPriceMatrix_Variance_RockBottomRollup_Craftworks返回的一些数据填充到basecraftworks表中,然后返回其内容

使现代化 尝试将FROM OPENROWSET jazz与以下代码一起使用时:

IF OBJECT_ID ( 'RockBottomAmalgamated', 'P' ) IS NOT NULL   
    DROP PROCEDURE RockBottomAmalgamated;  
GO
CREATE PROC [dbo].[RockBottomAmalgamated]
    @BegDate datetime,
    @EndDate datetime,
    @SortBy varchar(20)
AS
CREATE TABLE #BaseCraftworksTable
 (
   Unit    varchar(25)            
  ,ShortName    varchar(50)
  ,ItemCode  varchar(25)  
  ,Description  varchar(100)  
  ,Price  varchar(25)
  ,Variance  varchar(25)
  ,VarianceAverage  varchar(10)
  ,PriceWeek  varchar(50)
  ,Week  varchar(10)  
 )

SELECT * INTO #BaseCraftworksTable FROM OPENROWSET(
   'SQLNCLI', 'Server=PLATYPUSQL42.za.ABCData;Trusted_Connection=yes;', 
   'EXEC sp_ViewPriceMatrix_Variance_RockBottomRollup_Craftworks
       @BegDate = @BegDate
      ,@EndDate = @EndDate
      ,@SortBy  = @SortBy');

SELECT * FROM #BaseCraftworksTable
…我收到一条关于BaseCraftworksTable的错误消息,该消息已存在。因此,我在创建表之前添加了以下内容:

IF OBJECT_ID('#BaseCraftworksTable', 'U') IS NOT NULL
  DROP TABLE #BaseCraftworksTable; 
…但没用

所以我注释掉了createtable部分;这消除了以前的错误,但代之以调用这些错误:

Error 53: Named Pipes Provider: Could not open a connection to SQL Server [53]. 

OLE DB provider "SQLNCLI11" for linked server "(null)" returned message "Login timeout expired".
OLE DB provider "SQLNCLI11" for linked server "(null)" returned message "A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.".
PLATYPUSQL42.za.ABCData提供的连接值正是我从LINQPad中的connection下拉列表中选择的,SQL是从Language下拉列表中选择的;它在林帕德工作;OPENROWSET调用的第二个参数是什么

更新2 我显然不是SQL专家,但让我吃惊的是,我可以注释掉我的CREATETABLE语句,重新创建SP,运行它,并且对于一个不存在的表没有错误消息。因此,我假设如果尚未定义该表,则会根据INSERT INTO子句中的参数自动创建该表。有意义/很好的特性;但是在这种情况下,显式定义表有什么好处


注意:尽管如此,我仍然没有得到任何结果;我试着这样想,也许问题在于如何定义表中的一个或多个字段。但不是,问题不是由其他原因引起的。…

从OPENROWSET'SQLNCLI','Server=YourServer'将*选择到BaseCraftworksTable中;受信任的_连接=是;','EXEC sp_ViewPriceMatrix_Variance_RockBottomRollup_Craftworks将参数放在这里,这里可能会出现各种各样的问题。为了缩小它的范围,我们需要看到SPI VIEWPRICECATIXXXVIALANSSIORKBATOMLROUPUBJCRAFTWorksPROC。sp_uu前缀有问题。此外,我不建议为此使用环回OPENROWSET,它与INSERT..EXEC相比不太可能工作,它很麻烦,尤其是必须包含参数,这是一个引入其他无关问题死锁、配置设置、安全问题和潜在性能问题的机会。INSERT..EXEC是执行此操作的推荐方法,您只需调试当前问题。如果您是从Management Studio执行此操作,只需输入PRINT语句。从OPENROWSET'SQLNCLI',Server=YourServer,将*选择到BaseCraftworksTable中;受信任的_连接=是;','EXEC sp_ViewPriceMatrix_Variance_RockBottomRollup_Craftworks将参数放在这里,这里可能会出现各种各样的问题。为了缩小它的范围,我们需要看到SPI VIEWPRICECATIXXXVIALANSSIORKBATOMLROUPUBJCRAFTWorksPROC。sp_uu前缀有问题。此外,我不建议为此使用环回OPENROWSET,它与INSERT..EXEC相比不太可能工作,它很麻烦,尤其是必须包含参数,这是一个引入其他无关问题死锁、配置设置、安全问题和潜在性能问题的机会。INSERT..EXEC是执行此操作的推荐方法,您只需调试当前问题。如果您是从Management Studio执行此操作,只需输入PRINT语句即可。
Error 53: Named Pipes Provider: Could not open a connection to SQL Server [53]. 

OLE DB provider "SQLNCLI11" for linked server "(null)" returned message "Login timeout expired".
OLE DB provider "SQLNCLI11" for linked server "(null)" returned message "A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.".