构建SQL Server表时使用SMO和SQL查询(通过SqlConnection)的区别

本文关键字:SQL 通过 SqlConnection 区别 查询 SMO Server 构建 | 更新日期: 2023-09-27 18:26:00

我真的不明白在SQL Server数据库中创建表时使用其中一个或另一个的区别。制作桌子时,一个比另一个更安全还是更快?

构建SQL Server表时使用SMO和SQL查询(通过SqlConnection)的区别

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

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

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

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

如果您想为应用程序的安装创建安装脚本,请使用TSQL DDL。更加简单明了。

编辑

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

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