gpt4 book ai didi

c# - 有没有办法加快现有数据库的 SQL Server 管理对象遍历?

转载 作者:行者123 更新时间:2023-11-30 14:05:17 28 4
gpt4 key购买 nike

我目前正在使用 SMO 和 C# 遍历数据库以创建表示两个数据库各个方面的设置树,然后比较这些树以查看它们的不同之处和不同之处。

问题是,对于2个合理大小的数据库,在本地爬取它们并收集我要比较的表/列/存储过程信息需要将近10分钟。

是否有比 SMO 更好的界面来以这种方式访问​​数据库?我不想包含任何额外的依赖项,但我会为了 50% 的速度改进而忍受这种痛苦。下面是我如何枚举表和列的示例。

        Microsoft.SqlServer.Management.Smo.Database db = db_in;
foreach (Table t in db.Tables)
{
if (t.IsSystemObject == false)
{

foreach (Column c in t.Columns)
{
}
}
}

最佳答案

尝试强制 SMO 一次读取所有必填字段,而不是在访问时查询。参见 this blog了解更多信息


编辑:链接已失效,但我找到了 the page在 archive.org 上。这是相关代码:

Server server = new Server();

// Force IsSystemObject to be returned by default.
server.SetDefaultInitFields(typeof(StoredProcedure), "IsSystemObject");

StoredProcedureCollection storedProcedures = server.Databases["AdventureWorks"].StoredProcedures;

foreach (StoredProcedure sp in storedProcedures) {
if (!sp.IsSystemObject) {
// We only want user stored procedures
}
}

关于c# - 有没有办法加快现有数据库的 SQL Server 管理对象遍历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/401740/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com