Ссылки проекта базы данных SQL на оперативные временные таблицы

Я пытаюсь взять устаревшую базу данных, которая сейчас находится на SQL Server 2008 R2, и создать для нее проект базы данных в Visual Studio 2010. Существует несколько хранимых процедур, которые использовали некоторые временные таблицы "на лету" (такие, где вы SELECT * INTO #NewTempTable). Очевидно, это вызывает некоторые справочные предупреждения SQL04151 в проекте базы данных.

Есть ли способ исправить или просто игнорировать эти конкретные предупреждения? Я знаю, что немедленным ответом может быть объявление временной таблицы внутри процедуры и определение столбцов, но на данный момент это не вариант.


person Justin Rassier    schedule 06.12.2012    source источник


Ответы (2)


Это не похоже на проблему с последним типом проекта базы данных для VS 2010, установленным как часть Инструменты данных SQL Server.

Попробуйте установить SQL Server Data Tools. После его установки вы сможете обновить проект базы данных до нового типа, щелкнув его правой кнопкой мыши в обозревателе решений. (Новый тип проекта обратно совместим с SQL 2008 и SQL 2005, а также имеет ряд значительных улучшений.)

К вашему сведению, новый тип проекта имеет очень общее название «Проект базы данных SQL Server», и вы найдете его в группе шаблонов «SQL Server», а не в группе «База данных > SQL Server».

person Keith    schedule 06.12.2012

Включите SET FMTONLY OFF в своих хранимых процедурах.

Из MSDN:

Возвращает клиенту только метаданные. Может использоваться для проверки формата ответа без фактического выполнения запроса.

Ваша проблема заключается в том, что по умолчанию Visual Studio включает этот параметр... что позволяет ему определять формат ответа без выполнения запроса, но это не работает, если используются временные таблицы.

Вот обсуждение этой проблемы в MS Connect: Улучшение FMTONLY Intelligence

Согласно ответу Microsoft, это исправлено в 2012 году, но не будет исправлено в более ранних версиях.

Наконец, здесь обсуждение FMTONLY проблемы.

person Michael Fredrickson    schedule 06.12.2012
comment
Размещение SET FMTONLY OFF в начале моих хранимых процедур, похоже, не сообщает VS. Все еще получаю те же предупреждения. Когда вы указали Turn SET FMTONLY OFF в своих хранимых процедурах, вы имели в виду объявить это в начале или где-то в VS есть настройка? - person Justin Rassier; 06.12.2012
comment
Вы можете SET FMTONLY OFF вне вашей хранимой процедуры? Если нет, то это не может быть решением вашей проблемы... - person Michael Fredrickson; 06.12.2012