【问题标题】:Difference between using SMO and SQL queries (through SqlConnection) when building a SQL Server table构建 SQL Server 表时使用 SMO 和 SQL 查询(通过 SqlConnection)的区别
【发布时间】:2013-08-01 17:03:23
【问题描述】:

在我的 SQL Server 数据库中创建表时,我不太了解使用其中一个或另一个之间的区别。建表时,一个比另一个更安全还是更快?

【问题讨论】:

    标签: c# sql-server smo sqlconnection


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      如果您想创建安装脚本来安装您的应用,请使用 TSQL DDL。更容易和更直接。

      编辑

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

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

      【讨论】:

      • 您能解释一下为什么 SMO 更适合向表中添加列或“控制索引分段”吗?我不是在争论我只是不清楚为什么你认为这些事情由 SMO 处理得更好。
      • 这个答案根本没有解决OP的问题。
      • 现在可以了,请参阅“或向表中添加列”
      猜你喜欢
      • 1970-01-01
      • 2020-08-04
      • 1970-01-01
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-09
      相关资源
      最近更新 更多