在SQL Server中的东西,一个中间SQL用户应该知道并使用用户定义数据类型?

什么是使用的UDT的利弊?

有帮助吗?

解决方案

从不使用它们就是我的建议。你是在伤害的世界里,如果你有改变的定义。也许这已经因为SQL Server 2000和别人更熟悉新版本可以告诉你现在是否安全在水中得到改善,但直到我有证实这一点,并用测试检查出来我自己,我不会“吨把它放在我的生产系统。

检查出的细节这个问题: 如何改变基本类型在SQL Server UDT的2005?

其他提示

我做的的使用基于代码的UDT的,因为我不认为额外的复杂性权证的优势。我的的使用T-SQL的UDT,因为有非常少的额外的复杂性,这样的好处是值得的。 (感谢去Marc_s的指出我原来的职位是不完整的!)

<强>关于基于代码的UDT的

想想这样说:如果你的项目有一个托管代码组件(您的应用程序)和数据库组件(SQL Server)的是什么真正的好处,你从数据库中定义的托管代码获得什么?在我的经验中?无。

部署是比较困难的,因为你必须集添加到您的数据库部署和改变这些组件,在SQL Server中添加文件等。您还可以打开SQL Server中的CLR(不是什么大不了的事,但没有人证明,我认为这不会有性能/内存罚款)。最后,你将有你将不得不到底是什么,如果你只是简单的设计到应用程序的代码这一点。可能有一些性能增强,但它确实令我过早优化的情况下 - 尤其是因为我不知道,如果的的性能会受到影响,由于其在与关闭CLR

请注意:我假设你会使用SQL Server的CLR定义你的类型。有关SQL Server 2000 HLGEM会谈,但我不熟悉的2000,并认为这只有在外部定义的DLL UDF和不的UDT(但不要引用我......我真的不熟悉它!)。

<强>关于T-SQL的UDT

T_SQL的UDT可在SQL单独定义(进入“可编程|类型|用户定义的数据类型”,在SQL Server Management Studio中)。对于标准的UDT我的 的其实建议你掌握它们。他们是很容易的,可以让你的DDL更自我记录和可以强制完整性约束。例如,我定义一个“GenderType”(CHAR(1),而不是空的,保持“M”或“F”),以确保只有适当的数据在性别字段允许的。

的UDT是很容易整体但这篇文章给出了一个很好的例子如何把它带到一个新的水平通过定义规则来限制在UDT允许的数据。

当我原先回答了这个问题我固定在复杂的,代码定义的类型的想法(嫌手掌前额)。所以...感谢马克。

我真的不能推荐使用任何SQL实现特定的功能,使它更难当你成长了MSSQL的和正在迁移到另一个DBMS。对于我们的数据仓库DBS我们开始在MSSQL,迁移到Oracle和具有自去年毕业到HP Vertica的。

scroll top