2014-07-29 5 views
3

У меня есть хранимая процедура в SQL Server 2008 R2:Типичная таблица SQL Server 2008 R2 не может работать?

CREATE TYPE TagTable AS TABLE (Tag VARCHAR(50)) 

    declare @FilteredTags as TagTable 
    INSERT INTO @FilteredTags (Tag) 
    SELECT data FROM ... 

Он используется для работы, но я хочу, чтобы изменить Tag от VARCHAR(15) к VARCHAR(50), я получаю сообщение об ошибке:

Msg 2715, Level 16, State 3, Procedure SearchNewsByTag, Line 3
Column, parameter, or variable #10: Cannot find data type TagTable.
Parameter or variable '@FilteredTags' has an invalid data type.

Msg 1087, Level 16, State 1, Procedure SearchNewsByTag, Line 36
Must declare the table variable "@FilteredTags".

I попытался перезапустить все службы SQL Server, попробуйте использовать другое имя, например TagTable2, TagTable3 ... все еще не работает. Уровень совместимости 100

РЕШЕНИЕ: ПРОВЕРЬТЕ SCRIPT от http://www.sql-server-performance.com/2008/how-to-alter-a-uddt/, чтобы восстановить новый UDDT.

+1

Пожалуйста, разместите строку, в которой вы изменяете длину varchar. Вы изменяете тип, пытаетесь ли вы напрямую изменить переменную таблицы? Подробнее здесь, пожалуйста. –

+2

Он работает без проблем http://sqlfiddle.com/#!6/b2add/3 Я думаю, что тип недоступен в базе данных, вы можете проверить, что – Surendra

+0

@JaazCole я не написал ничего, чтобы изменить varchar Я думаю, что SQL Server не поддерживает эту функцию. –

ответ

1

Пожалуйста, обратите внимание на типы таблиц. У них много ограничений.

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

Так что, если вы будете следовать следующей схеме, вы никогда не будете иметь проблем:

  • создать новый тип с правильным разрешением доступа
  • изменить весь код, который использует старый тип использовать только новый тип
  • много теста
  • загрузки в живую среду
  • ждать две недели
  • уронить старый тип таблицы

Вы не можете изменить или удалить тип таблицы, если она используется.

Смежные вопросы