2011-08-20 38 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

另一個缺點是缺乏可能性來改變類型的定義。如果在創建它之前一直保持不變,直到刪除它,則必須刪除引用該類型的所有對象,即使用該類型的所有存儲過程。 –

相關問題