SQL Server 2008 R2中的类型表无法工作?

时间:2014-07-29 16:46:10

标签: sql sql-server

我在SQL Server 2008 R2中有一个存储过程:

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

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

它曾经有用,但后来我想将TagVARCHAR(15)更改为VARCHAR(50),我收到错误:

  

Msg 2715,Level 16,State 3,Procedure SearchNewsByTag,Line 3
  列,参数或变量#10:找不到数据类型TagTable   参数或变量' @ FilteredTags'具有无效的数据类型。

     

Msg 1087,Level 16,State 1,Procedure SearchNewsByTag,Line 36
  必须声明表变量" @ FilteredTags"。

我尝试重新启动所有SQL Server服务,尝试使用其他名称,如TagTable2,TagTable3 ......仍然无法正常工作。兼容级别为100

解决方案:从http://www.sql-server-performance.com/2008/how-to-alter-a-uddt/运行SCRIPT以重新生成新的UDDT。

1 个答案:

答案 0 :(得分:1)

请注意表格类型。他们有很多限制。

如果我需要修改表格类型,我总是创建一个新版本并修改所有相关代码。

因此,如果您遵循以下模式,您将永远不会遇到问题:

  • 使用适当的访问权限创建新类型
  • 修改使用旧类型的所有代码仅使用新类型
  • 很多测试
  • 上传到实时环境
  • 等两周
  • 删除旧表格类型

如果表格类型正在使用,则无法修改或删除。