我有一个执行动态数据透视任务的存储过程。我希望将此过程的结果加载到表中。该表可以在加载之前清空/删除。
这是我用于任务的代码。但是我收到以下错误。
Dynamic Pivot Error in sql server
配置选项'show advanced options'从1更改为1.运行RECONFIGURE
语句进行安装。
配置选项'Ad Hoc Distributed Queries'从1更改为1.运行RECONFIGURE
语句进行安装。
消息11514,级别16,状态1,过程sp_describe_first_result_set,第1行 无法确定元数据,因为语句'exec sp_executesql @query;'在过程'DynamicPivotProcedure'中包含动态SQL。请考虑使用WITH RESULT SETS子句明确描述结果集
代码:
create procedure dbname.schemaname.DynamicPivotProcedure
as
begin
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
SELECT @cols = Stuff((SELECT ',' + Quotename([check])
FROM TEST
GROUP BY [Check]
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
SET @query = N'SELECT ID, [Total Of Score],' + @cols + N' from
(SELECT TEST.[ID],
Score,
[check],
[Total Of Score] = Count(TEST.Score) over(partition by [ID], [score], [check])
FROM TEST) T
pivot
(
SUM (T.[score])
for T.[check] in (' + @cols + N') ) p '
EXEC Sp_executesql @query;
end
go
sp_configure 'Show Advanced Options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
IF OBJECT_ID('tempdb..#MyTempTable') IS NOT NULL
begin
DROP TABLE #MyTempTable
end
SELECT * INTO #MyTempTable FROM
OPENROWSET('SQLNCLI', 'Server= ABC124;Trusted_Connection=yes;',
'EXEC DATABASE.Schemaname.DynamicPivotProcedure')
SELECT * FROM #MyTempTable
答案 0 :(得分:0)
您不需要此部分:
go
sp_configure 'Show Advanced Options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO

下面的错误看起来像连接错误。 SSMS无法连接到您的SQLServer instamce。打开一个新的SSMS,连接到SQL服务器,打开一个新查询并粘贴上面的代码(没有sp_configure部分)