Sql server 存储过程中表值参数的缺点是什么?

Sql server 存储过程中表值参数的缺点是什么?,sql-server,tsql,sql-server-2008,table-valued-parameters,Sql Server,Tsql,Sql Server 2008,Table Valued Parameters,我使用过各种版本的MS SQL Server,包括200020052008、R2(一些)Denali。我从来没有对像存储过程中的表值参数这样的新特性如此兴奋过。我也做C#开发,我在挖掘TVP,我用它来减少前端应用程序的数据库调用次数 现在我真正的问题是使用表值参数的缺点是什么。这简直太好了,难以置信 请分享你的想法。另外,我不想太深入地使用它而不得不进行更改。表值参数几乎没有实际的缺点 好处 在频繁使用时缓存 非常有效地促进批量插入 减少到服务器的往返 缺点: SQL Server不维护T

我使用过各种版本的MS SQL Server,包括200020052008、R2(一些)Denali。我从来没有对像存储过程中的表值参数这样的新特性如此兴奋过。我也做C#开发,我在挖掘TVP,我用它来减少前端应用程序的数据库调用次数

现在我真正的问题是使用表值参数的缺点是什么。这简直太好了,难以置信


请分享你的想法。另外,我不想太深入地使用它而不得不进行更改。

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

好处

  • 在频繁使用时缓存
  • 非常有效地促进批量插入
  • 减少到服务器的往返
缺点:

  • SQL Server不维护TVP列的统计信息
  • 只读
  • 不能用作“Select Into”或“Insert Exec”语句的目标
  • 仅在Sql Server 2008及更高版本上可用
参考资料


无-除此之外,它仅在SQL Server 2008及更高版本中可用……这可能会引起您的兴趣。它们是只读的,很多人不喜欢这样。另外,厄兰的文章,米凯尔张贴了一些关于TVP的好信息。感谢回复的家伙们。我确实读过ready only和1000行性能的限制,但我的理解是,与TVP限制相比,到db的个人往返成本更高?另外的缺点是不可能改变类型的定义。如果创建它一次,它将保持不变,直到删除它为止,但要删除它,必须删除引用该类型的所有对象,即使用该类型的所有存储过程。