Я столкнулся с очень странной ошибкой с временными таблицами и некоторыми хранимыми процедурами SQL. За последние пару дней, только ошибка я был в состоянии получить это "Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding."
После повышения порога тайм-аута в C# (от 30 секунд до 120 секунд), я теперь получаю эту ошибку:«Недопустимое имя столбца» в таблице SQL temp
"Invalid column name 'CoverageLimit'. Invalid column name 'Difference_Options'. Invalid column name 'CoverageLimit'. Invalid column name 'CoverageLimit'. Invalid column name 'CoverageLimit'. Invalid column name 'CoverageLimit'. Invalid column name 'CoverageLimit'. Invalid column name 'CoverageLimit'. Invalid column name 'Difference_Options'. Invalid column name 'Difference_Options'. Invalid column name 'CoverageLimit'."
Однако эти столбцы не существуют в таблице temp, на которую ссылаются в хранимой процедуре, вызываемой в функции, в которую попадает трассировка стека.
CREATE TABLE [dbo].[#TEMP]
(
FormEndorsementID [int] NOT NULL,
[Restriction] bit,
[Description] nvarchar(3000),
[Type] nvarchar(255),
[QQ_Reference] nvarchar(255),
[Values] nvarchar(255)
) ON [PRIMARY]
я был весьма смущен, поэтому я выполнил запрос, чтобы найти все экземпляры CoverageLimit
или Difference_Options
в хранимых процедурах, и в конечном итоге найти эту временную таблицу в двух совершенно другой хранимой процедуры:
CREATE TABLE [dbo].[#TEMP]
(
OptionID [int] IDENTITY(1,1) NOT NULL,
CoverageLimit int,
Difference_Options int
) ON [PRIMARY]
(Примечание. Я не был тем, кто настроил эту схему базы данных. Это очень важно для очистки/обновления.)
Теперь может возникнуть проблема с какой-то областью? Самая странная часть об этом заключается в том, что у нас есть это же приложение, работающее на другом сервере с одними и теми же базами данных, и эта ошибка не встречается.
Спасибо!
Есть ли вероятность, что они находятся на обычном столе, с которым вы имеете дело? Возможно, с помощью триггеров? –
Возможно, вам захочется начать с присвоения имен вашим временным таблицам чем-то отличным от TEMP. Используйте значащие имена объектов. – mjw
@ Dave.Gugg Сначала я просмотрел все таблицы, чтобы увидеть, существуют ли эти столбцы, и нашел их только в двух хранимых процедурах. – user1888527