Я пытаюсь использовать sys.dm_exec_describe_first_result_set с запросом, содержащим переменную таблицы, для описания столбцов запроса.Но объявление переменной таблицы в этом запросе вызывает активацию триггера DATABASE для события AFTER CREATE_TABLE, которое содержит вызов хранимой процедуры с временной таблицей.
Обычное объявление переменной таблицы, которую этот триггер не активирует.Некоторые идеи, почему триггер активирован для табличной переменной?
CREATE PROCEDURE SP1 AS
BEGIN
CREATE TABLE #A(b int)
INSERT INTO #A(b) VALUES(1)
DROP TABLE #A
END
GO
CREATE TRIGGER [CreateObjectDatabaseTrigger]
ON DATABASE
AFTER
CREATE_TABLE
AS
BEGIN
EXEC SP1
END
GO
ENABLE TRIGGER [CreateObjectDatabaseTrigger] ON DATABASE
DECLARE @SqlQuery NVARCHAR(MAX) = N'DECLARE @A TABLE (b int) SELECT * FROM @A'
SELECT error_message, name
FROM
sys.dm_exec_describe_first_result_set
(@SqlQuery, NULL, 0)
Результат с включенным триггером: не удалось определить метаданные, поскольку оператор 'INSERT INTO #A (b) VALUES (1)' в процедуре 'SP1'использует временную таблицу.