2011-08-20 37 views
4

我曾与各种版本的MS SQL Server包括2000,2005,2008,R2,(一些)Denali。我从来没有对存储过程中的表值参数等新功能感到兴奋。我也在做C#开发,并且我正在挖掘TVP,我使用它来最小化来自我的前端应用程序的数据库调用数量。存储过程中表值参数的缺点是什么?

现在我真正的问题是什么是使用表值参数的缺点。它几乎太好,不可能是真的。

请分享您的想法。另外,我不想太深入使用它,必须改变。

+1

无 - 除了它仅在SQL Server 2008和更新的版本中提供... –

+0

这可能是您感兴趣的。 http://www.sommarskog.se/arrays-in-sql-2008.html –

+0

它们是只读的,许多人不喜欢它。另外Erland的文章Mikael发布了关于TVP的一些很好的信息。 –

回答

5

表值参数几乎没有实际的缺点。

在频繁的使用优势

  • 缓存
  • 方便批量插入非常有效地
  • 减少往返服务器

缺点:

  • SQL Server不保持对TVP列统计
  • 只读
  • 不能被用作“选择进入”或“插入Exec的”语句的目标
  • 仅在SQL Server 2008和以上
  • 可用

参考

+0

另一个缺点是缺乏可能性来改变类型的定义。如果在创建它之前一直保持不变,直到删除它,则必须删除引用该类型的所有对象,即使用该类型的所有存储过程。 –

相关问题