0

在我的 SQL Server 数据库中创建表时,我真的不明白使用一个或另一个之间的区别。在构建表格时,一个比另一个更安全还是更快?

4

2 回答 2

0

我不确定 SMO 是否涵盖了您要为表格设置的每一个属性和属性,并且四处寻找它们可能是徒劳的。就我个人而言,我更愿意使用 DDL ( CREATE TABLE, ALTER TABLE, 等),不仅因为我不必查找所有属性,而且还因为它有助于我在我不想或不能的情况下加强我对这些命令的了解' t 使用 SMO。但这可能只是一种偏好。

至于速度,除非您使用纳秒秒表通过 SMO 层测量解析/解释,否则没有任何区别。它最终将构建CREATE TABLE您自己编写的相同命令,并将其发送到 SQL Server。

于 2013-08-01T17:07:53.300 回答
0

SMO 和 DDL 语句用于不同的目的,尽管有时会重叠。

如果您想以编程方式控制您的数据库架构,请使用 SMO。一个示例是添加“动态”列,这意味着您的系统支持在运行时添加数据库列并将它们映射到您的业务层和/或 GUI。另一个例子是控制索引分割并在事情变得多毛时发出危险信号。

如果要创建安装脚本以安装应用程序,请使用 TSQL DDL。更容易和更直接。

编辑

使用 SMO,您可以获得对象模型和 API。想象一下,您必须一一通过所有列。使用 SMO,您可以指定所需的元数据,加载它并循环列集合。使用 ADO.NET,可以查询 INFORMATION_SCHEMA 和系统表以获取架构(尝试获取有关外键的所有信息并查看该代码)。

好吧,对于创建表或向表中添加列,这可能没有什么区别,实际上可能根本没有区别。但是对于管理多个表和键,那就是另一回事了。

于 2013-08-01T17:16:45.160 回答