@@ -7632,6 +7632,10 @@ ELSE
76327632 AvgSpills MONEY,
76337633 QueryPlanCost FLOAT,
76347634 Pattern NVARCHAR(20),
7635+ ai_prompt NVARCHAR(MAX),
7636+ ai_advice NVARCHAR(MAX),
7637+ ai_payload NVARCHAR(MAX),
7638+ ai_raw_response NVARCHAR(MAX),
76357639 JoinKey AS ServerName + Cast(CheckDate AS NVARCHAR(50)),
76367640 CONSTRAINT [PK_' + REPLACE (REPLACE (@OutputTableName,N ' [' ,N ' ' ),N ' ]' ,N ' ' ) + N ' ] PRIMARY KEY CLUSTERED(ID ASC));'
76377641 );
@@ -7749,6 +7753,70 @@ END ';
77497753 EXEC (@StringToExecute);
77507754 END
77517755
7756+ /* If the table doesn't have the new ai_prompt column, add it. See Github #3669. */
7757+ SET @ObjectFullName = @OutputDatabaseName + N ' .' + @OutputSchemaName + N ' .' + @OutputTableName;
7758+ SET @StringToExecute = N ' IF NOT EXISTS (SELECT * FROM ' + @OutputDatabaseName + N' .sys.all_columns
7759+ WHERE object_id = (OBJECT_ID('' ' + @ObjectFullName + ' '' )) AND name = '' ai_prompt'' )
7760+ ALTER TABLE ' + @ObjectFullName + N ' ADD ai_prompt NVARCHAR(MAX) NULL;' ;
7761+ IF @ValidOutputServer = 1
7762+ BEGIN
7763+ SET @StringToExecute = REPLACE (@StringToExecute,' '' ai_prompt'' ' ,' '' '' ai_prompt'' '' ' );
7764+ SET @StringToExecute = REPLACE (@StringToExecute,' '' ' + @ObjectFullName + ' '' ' ,' '' '' ' + @ObjectFullName + ' '' '' ' );
7765+ EXEC (' EXEC('' '+ @StringToExecute+ ' '' ) AT ' + @OutputServerName);
7766+ END ;
7767+ ELSE
7768+ BEGIN
7769+ EXEC (@StringToExecute);
7770+ END ;
7771+
7772+ /* If the table doesn't have the new ai_advice column, add it. See Github #3669. */
7773+ SET @ObjectFullName = @OutputDatabaseName + N ' .' + @OutputSchemaName + N ' .' + @OutputTableName;
7774+ SET @StringToExecute = N ' IF NOT EXISTS (SELECT * FROM ' + @OutputDatabaseName + N' .sys.all_columns
7775+ WHERE object_id = (OBJECT_ID('' ' + @ObjectFullName + ' '' )) AND name = '' ai_advice'' )
7776+ ALTER TABLE ' + @ObjectFullName + N ' ADD ai_advice NVARCHAR(MAX) NULL;' ;
7777+ IF @ValidOutputServer = 1
7778+ BEGIN
7779+ SET @StringToExecute = REPLACE (@StringToExecute,' '' ai_advice'' ' ,' '' '' ai_advice'' '' ' );
7780+ SET @StringToExecute = REPLACE (@StringToExecute,' '' ' + @ObjectFullName + ' '' ' ,' '' '' ' + @ObjectFullName + ' '' '' ' );
7781+ EXEC (' EXEC('' '+ @StringToExecute+ ' '' ) AT ' + @OutputServerName);
7782+ END ;
7783+ ELSE
7784+ BEGIN
7785+ EXEC (@StringToExecute);
7786+ END ;
7787+
7788+ /* If the table doesn't have the new ai_payload column, add it. See Github #3669. */
7789+ SET @ObjectFullName = @OutputDatabaseName + N ' .' + @OutputSchemaName + N ' .' + @OutputTableName;
7790+ SET @StringToExecute = N ' IF NOT EXISTS (SELECT * FROM ' + @OutputDatabaseName + N' .sys.all_columns
7791+ WHERE object_id = (OBJECT_ID('' ' + @ObjectFullName + ' '' )) AND name = '' ai_payload'' )
7792+ ALTER TABLE ' + @ObjectFullName + N ' ADD ai_payload NVARCHAR(MAX) NULL;' ;
7793+ IF @ValidOutputServer = 1
7794+ BEGIN
7795+ SET @StringToExecute = REPLACE (@StringToExecute,' '' ai_payload'' ' ,' '' '' ai_payload'' '' ' );
7796+ SET @StringToExecute = REPLACE (@StringToExecute,' '' ' + @ObjectFullName + ' '' ' ,' '' '' ' + @ObjectFullName + ' '' '' ' );
7797+ EXEC (' EXEC('' '+ @StringToExecute+ ' '' ) AT ' + @OutputServerName);
7798+ END ;
7799+ ELSE
7800+ BEGIN
7801+ EXEC (@StringToExecute);
7802+ END ;
7803+
7804+ /* If the table doesn't have the new ai_raw_response column, add it. See Github #3669. */
7805+ SET @ObjectFullName = @OutputDatabaseName + N ' .' + @OutputSchemaName + N ' .' + @OutputTableName;
7806+ SET @StringToExecute = N ' IF NOT EXISTS (SELECT * FROM ' + @OutputDatabaseName + N' .sys.all_columns
7807+ WHERE object_id = (OBJECT_ID('' ' + @ObjectFullName + ' '' )) AND name = '' ai_raw_response'' )
7808+ ALTER TABLE ' + @ObjectFullName + N ' ADD ai_raw_response NVARCHAR(MAX) NULL;' ;
7809+ IF @ValidOutputServer = 1
7810+ BEGIN
7811+ SET @StringToExecute = REPLACE (@StringToExecute,' '' ai_raw_response'' ' ,' '' '' ai_raw_response'' '' ' );
7812+ SET @StringToExecute = REPLACE (@StringToExecute,' '' ' + @ObjectFullName + ' '' ' ,' '' '' ' + @ObjectFullName + ' '' '' ' );
7813+ EXEC (' EXEC('' '+ @StringToExecute+ ' '' ) AT ' + @OutputServerName);
7814+ END ;
7815+ ELSE
7816+ BEGIN
7817+ EXEC (@StringToExecute);
7818+ END ;
7819+
77527820 IF @CheckDateOverride IS NULL
77537821 BEGIN
77547822 SET @CheckDateOverride = SYSDATETIMEOFFSET ();
@@ -7768,14 +7836,14 @@ END ';
77687836 + ' (ServerName, CheckDate, Version, QueryType, DatabaseName, AverageCPU, TotalCPU, PercentCPUByType, CPUWeight, AverageDuration, TotalDuration, DurationWeight, PercentDurationByType, AverageReads, TotalReads, ReadWeight, PercentReadsByType, '
77697837 + ' AverageWrites, TotalWrites, WriteWeight, PercentWritesByType, ExecutionCount, ExecutionWeight, PercentExecutionsByType, '
77707838 + ' ExecutionsPerMinute, PlanCreationTime, LastExecutionTime, LastCompletionTime, PlanHandle, SqlHandle, QueryHash, QueryPlanHash, StatementStartOffset, StatementEndOffset, PlanGenerationNum, MinReturnedRows, MaxReturnedRows, AverageReturnedRows, TotalReturnedRows, QueryText, QueryPlan, NumberOfPlans, NumberOfDistinctPlans, Warnings, '
7771- + ' SerialRequiredMemory, SerialDesiredMemory, MinGrantKB, MaxGrantKB, MinUsedGrantKB, MaxUsedGrantKB, PercentMemoryGrantUsed, AvgMaxMemoryGrant, MinSpills, MaxSpills, TotalSpills, AvgSpills, QueryPlanCost, Pattern ) '
7839+ + ' SerialRequiredMemory, SerialDesiredMemory, MinGrantKB, MaxGrantKB, MinUsedGrantKB, MaxUsedGrantKB, PercentMemoryGrantUsed, AvgMaxMemoryGrant, MinSpills, MaxSpills, TotalSpills, AvgSpills, QueryPlanCost, Pattern, ai_prompt, ai_advice, ai_payload, ai_raw_response ) '
77727840 + ' SELECT TOP (@Top) '
77737841 + QUOTENAME (CAST (SERVERPROPERTY (' ServerName' ) AS NVARCHAR (128 )), ' '' ' ) + ' , @CheckDateOverride, '
77747842 + QUOTENAME (CAST (SERVERPROPERTY (' ProductVersion' ) AS NVARCHAR (128 )), ' '' ' ) + ' , '
77757843 + ' QueryType, DatabaseName, AverageCPU, TotalCPU, PercentCPUByType, PercentCPU, AverageDuration, TotalDuration, PercentDuration, PercentDurationByType, AverageReads, TotalReads, PercentReads, PercentReadsByType, '
77767844 + ' AverageWrites, TotalWrites, PercentWrites, PercentWritesByType, ExecutionCount, PercentExecutions, PercentExecutionsByType, '
77777845 + ' ExecutionsPerMinute, PlanCreationTime, LastExecutionTime, LastCompletionTime, PlanHandle, SqlHandle, QueryHash, QueryPlanHash, StatementStartOffset, StatementEndOffset, PlanGenerationNum, MinReturnedRows, MaxReturnedRows, AverageReturnedRows, TotalReturnedRows, QueryText, CAST(QueryPlan AS NVARCHAR(MAX)), NumberOfPlans, NumberOfDistinctPlans, Warnings, '
7778- + ' SerialRequiredMemory, SerialDesiredMemory, MinGrantKB, MaxGrantKB, MinUsedGrantKB, MaxUsedGrantKB, PercentMemoryGrantUsed, AvgMaxMemoryGrant, MinSpills, MaxSpills, TotalSpills, AvgSpills, QueryPlanCost, Pattern '
7846+ + ' SerialRequiredMemory, SerialDesiredMemory, MinGrantKB, MaxGrantKB, MinUsedGrantKB, MaxUsedGrantKB, PercentMemoryGrantUsed, AvgMaxMemoryGrant, MinSpills, MaxSpills, TotalSpills, AvgSpills, QueryPlanCost, Pattern, ai_prompt, ai_advice, ai_payload, ai_raw_response '
77797847 + ' FROM ##BlitzCacheProcs '
77807848 + ' WHERE 1=1 ' ;
77817849
@@ -7836,14 +7904,14 @@ END ';
78367904 + ' (ServerName, CheckDate, Version, QueryType, DatabaseName, AverageCPU, TotalCPU, PercentCPUByType, CPUWeight, AverageDuration, TotalDuration, DurationWeight, PercentDurationByType, AverageReads, TotalReads, ReadWeight, PercentReadsByType, '
78377905 + ' AverageWrites, TotalWrites, WriteWeight, PercentWritesByType, ExecutionCount, ExecutionWeight, PercentExecutionsByType, '
78387906 + ' ExecutionsPerMinute, PlanCreationTime, LastExecutionTime, LastCompletionTime, PlanHandle, SqlHandle, QueryHash, QueryPlanHash, StatementStartOffset, StatementEndOffset, PlanGenerationNum, MinReturnedRows, MaxReturnedRows, AverageReturnedRows, TotalReturnedRows, QueryText, QueryPlan, NumberOfPlans, NumberOfDistinctPlans, Warnings, '
7839- + ' SerialRequiredMemory, SerialDesiredMemory, MinGrantKB, MaxGrantKB, MinUsedGrantKB, MaxUsedGrantKB, PercentMemoryGrantUsed, AvgMaxMemoryGrant, MinSpills, MaxSpills, TotalSpills, AvgSpills, QueryPlanCost, Pattern ) '
7907+ + ' SerialRequiredMemory, SerialDesiredMemory, MinGrantKB, MaxGrantKB, MinUsedGrantKB, MaxUsedGrantKB, PercentMemoryGrantUsed, AvgMaxMemoryGrant, MinSpills, MaxSpills, TotalSpills, AvgSpills, QueryPlanCost, Pattern, ai_prompt, ai_advice, ai_payload, ai_raw_response ) '
78407908 + ' SELECT TOP (@Top) '
78417909 + QUOTENAME (CAST (SERVERPROPERTY (' ServerName' ) AS NVARCHAR (128 )), ' '' ' ) + ' , @CheckDateOverride, '
78427910 + QUOTENAME (CAST (SERVERPROPERTY (' ProductVersion' ) AS NVARCHAR (128 )), ' '' ' ) + ' , '
78437911 + ' QueryType, DatabaseName, AverageCPU, TotalCPU, PercentCPUByType, PercentCPU, AverageDuration, TotalDuration, PercentDuration, PercentDurationByType, AverageReads, TotalReads, PercentReads, PercentReadsByType, '
78447912 + ' AverageWrites, TotalWrites, PercentWrites, PercentWritesByType, ExecutionCount, PercentExecutions, PercentExecutionsByType, '
78457913 + ' ExecutionsPerMinute, PlanCreationTime, LastExecutionTime, LastCompletionTime, PlanHandle, SqlHandle, QueryHash, QueryPlanHash, StatementStartOffset, StatementEndOffset, PlanGenerationNum, MinReturnedRows, MaxReturnedRows, AverageReturnedRows, TotalReturnedRows, QueryText, QueryPlan, NumberOfPlans, NumberOfDistinctPlans, Warnings, '
7846- + ' SerialRequiredMemory, SerialDesiredMemory, MinGrantKB, MaxGrantKB, MinUsedGrantKB, MaxUsedGrantKB, PercentMemoryGrantUsed, AvgMaxMemoryGrant, MinSpills, MaxSpills, TotalSpills, AvgSpills, QueryPlanCost, Pattern '
7914+ + ' SerialRequiredMemory, SerialDesiredMemory, MinGrantKB, MaxGrantKB, MinUsedGrantKB, MaxUsedGrantKB, PercentMemoryGrantUsed, AvgMaxMemoryGrant, MinSpills, MaxSpills, TotalSpills, AvgSpills, QueryPlanCost, Pattern, ai_prompt, ai_advice, ai_payload, ai_raw_response '
78477915 + ' FROM ##BlitzCacheProcs '
78487916 + ' WHERE 1=1 ' ;
78497917
@@ -7985,22 +8053,26 @@ END ';
79858053 TotalSpills BIGINT,
79868054 AvgSpills MONEY,
79878055 QueryPlanCost FLOAT,
7988- Pattern NVARCHAR(20),
7989- JoinKey AS ServerName + Cast(CheckDate AS NVARCHAR(50)),
8056+ Pattern NVARCHAR(20),
8057+ ai_prompt NVARCHAR(MAX),
8058+ ai_advice NVARCHAR(MAX),
8059+ ai_payload NVARCHAR(MAX),
8060+ ai_raw_response NVARCHAR(MAX),
8061+ JoinKey AS ServerName + Cast(CheckDate AS NVARCHAR(50)),
79908062 CONSTRAINT [PK_' + REPLACE (REPLACE (@OutputTableName,' [' ,' ' ),' ]' ,' ' ) + ' ] PRIMARY KEY CLUSTERED(ID ASC));' ;
79918063 SET @StringToExecute + = N ' INSERT '
79928064 + @OutputTableName
79938065 + ' (ServerName, CheckDate, Version, QueryType, DatabaseName, AverageCPU, TotalCPU, PercentCPUByType, CPUWeight, AverageDuration, TotalDuration, DurationWeight, PercentDurationByType, AverageReads, TotalReads, ReadWeight, PercentReadsByType, '
79948066 + ' AverageWrites, TotalWrites, WriteWeight, PercentWritesByType, ExecutionCount, ExecutionWeight, PercentExecutionsByType, '
79958067 + ' ExecutionsPerMinute, PlanCreationTime, LastExecutionTime, LastCompletionTime, PlanHandle, SqlHandle, QueryHash, QueryPlanHash, StatementStartOffset, StatementEndOffset, PlanGenerationNum, MinReturnedRows, MaxReturnedRows, AverageReturnedRows, TotalReturnedRows, QueryText, QueryPlan, NumberOfPlans, NumberOfDistinctPlans, Warnings, '
7996- + ' SerialRequiredMemory, SerialDesiredMemory, MinGrantKB, MaxGrantKB, MinUsedGrantKB, MaxUsedGrantKB, PercentMemoryGrantUsed, AvgMaxMemoryGrant, MinSpills, MaxSpills, TotalSpills, AvgSpills, QueryPlanCost, Pattern ) '
8068+ + ' SerialRequiredMemory, SerialDesiredMemory, MinGrantKB, MaxGrantKB, MinUsedGrantKB, MaxUsedGrantKB, PercentMemoryGrantUsed, AvgMaxMemoryGrant, MinSpills, MaxSpills, TotalSpills, AvgSpills, QueryPlanCost, Pattern, ai_prompt, ai_advice, ai_payload, ai_raw_response ) '
79978069 + ' SELECT TOP (@Top) '
79988070 + QUOTENAME (CAST (SERVERPROPERTY (' ServerName' ) AS NVARCHAR (128 )), ' '' ' ) + ' , @CheckDateOverride, '
79998071 + QUOTENAME (CAST (SERVERPROPERTY (' ProductVersion' ) AS NVARCHAR (128 )), ' '' ' ) + ' , '
80008072 + ' QueryType, DatabaseName, AverageCPU, TotalCPU, PercentCPUByType, PercentCPU, AverageDuration, TotalDuration, PercentDuration, PercentDurationByType, AverageReads, TotalReads, PercentReads, PercentReadsByType, '
80018073 + ' AverageWrites, TotalWrites, PercentWrites, PercentWritesByType, ExecutionCount, PercentExecutions, PercentExecutionsByType, '
80028074 + ' ExecutionsPerMinute, PlanCreationTime, LastExecutionTime, LastCompletionTime, PlanHandle, SqlHandle, QueryHash, QueryPlanHash, StatementStartOffset, StatementEndOffset, PlanGenerationNum, MinReturnedRows, MaxReturnedRows, AverageReturnedRows, TotalReturnedRows, QueryText, QueryPlan, NumberOfPlans, NumberOfDistinctPlans, Warnings, '
8003- + ' SerialRequiredMemory, SerialDesiredMemory, MinGrantKB, MaxGrantKB, MinUsedGrantKB, MaxUsedGrantKB, PercentMemoryGrantUsed, AvgMaxMemoryGrant, MinSpills, MaxSpills, TotalSpills, AvgSpills, QueryPlanCost, Pattern '
8075+ + ' SerialRequiredMemory, SerialDesiredMemory, MinGrantKB, MaxGrantKB, MinUsedGrantKB, MaxUsedGrantKB, PercentMemoryGrantUsed, AvgMaxMemoryGrant, MinSpills, MaxSpills, TotalSpills, AvgSpills, QueryPlanCost, Pattern, ai_prompt, ai_advice, ai_payload, ai_raw_response '
80048076 + ' FROM ##BlitzCacheProcs '
80058077 + ' WHERE 1=1 ' ;
80068078
0 commit comments