2015-07-08 2 views
1

Информация: Мы находимся в процессе тестирования нашего обновления с SQL Server 2005 на SQL Server 2012 на этапе постановки. При чтении документации по функциям, которые больше не будут поддерживаться, COMPUTE (Transact-SQL) уходит, это будет проблемой для нас.Реализовать бесшовную функцию вычислений на SQL Server 2012

Вопрос: Есть ли способ выписать нашу собственную процедуру, которая заменит вычисление, встроенное в SQL Server 2012, которое сделает ее бесшовной, поэтому, когда вызывается Compute, она будет функционировать как SQL Server 2005? Альтернативой является то, что нам нужно обновить все файлы SQL, UDF, триггеры и хранимые процедуры, которые используют это встроенное с альтернативным кодом?

Note Я никогда не пытался воссоздать встроенную функцию, поэтому вся информация об этом будет очень полезной для меня и для всех, кто пытается это сделать в будущем. Также зная, можно ли это сделать, это плюс.

Clenup: Как всегда, если это дублирующееся сообщение, укажите ссылку ниже, и я удалю сообщение.

+1

'COMPUTE BY' не является функцией. Я не вижу, как его эффекты (создание дополнительных наборов результатов) могут быть легко реплицированы. Мне любопытно: почему вы использовали COMPUTE BY? Кажется, это отвратительный API. – usr

+0

Вы правы, это часть родного синтаксиса в 2005 году. Однако это нужно было бы реализовать другим способом, если бы это было возможно, поэтому использование функции слова. Я лично считаю, что правильным решением будет обновление до 2008 R2, которое даст нам несколько лет, чтобы исправить все местоположения, которые он использовал, а затем обновить до 2012 года. Вычисление было использовано в устаревшем коде (COBOL и пакетные процессы, которые вызывают файлы SQL) i заменили его более эффективным кодом, когда я его нашел. Существует всего 20 + лет кода для обзора, и я обеспокоен тем, что многие вещи будут ломаться с живым обновлением. –

+0

Я сделал рекомендацию перейти на SQL Server 2008 в первую очередь, это даст нам 4 года или около того, чтобы обновить весь код, а затем мы можем перейти на SQL Server 2012. Я очищу этот вопрос на следующей неделе, поскольку он больше не будет применимые к нашей проблеме. В исследовании, которое я сделал, похоже, что расширение существующего синтаксиса для добавления этой функции обратно не является чем-то, что можно сделать. –

ответ

1

COMPUTE BY не является функцией. Я не вижу, как его эффекты (создание дополнительных наборов результатов) могут быть легко реплицированы.

Замена COMPUTE BY временной таблицей, а некоторые петли должны быть прямолинейными, но это будет трудоемкая задача. Вероятно, лучше изменить приложение, чтобы оно не зависело от множества наборов результатов.

Я сделал рекомендацию перехода на SQL Server 2008 первых, это даст нам 4 года или около того, чтобы обновить весь код, а затем мы можем перейти к SQL Server 2012.

Это звучит разумно. К тому времени будет по крайней мере SQL Server 2016, поэтому вам нужно будет увидеть, какие другие функции были удалены в этот момент :)

+1

Наслаждайтесь победой, спасибо, что нашли время, чтобы обсудить это со мной! –