0

我在我的应用程序中使用 SQL Server 管理对象。应用程序中对 SMO 对象的大多数操作都是直接从 UI 触发的。例如,用户操作一个对象,导致从 SMO 对象(表、视图、...)读取或写入属性。

现在我想介绍一个后台操作,它会定期扫描一些对象(只读)。

我的问题是这是否会导致 SMO 出现问题。从文档中我知道对象的实例成员不是线程安全的。因此,我的计划是每当我从 UI 或后台线程访问每个 SMO 对象时都对其进行锁定。但是如果我同时访问两个不同的对象(例如视图和表)会发生什么。即使我只读取一个属性,该对象也可能没有完全初始化,需要从数据库加载。所以在最坏的情况下,SMO 需要同时初始化两个对象。由于我不知道 SMO 如何在内部处理此问题,我想知道是否有人知道 SMO 是否允许这样做,或者它是否会导致问题。

关于如何解决这个问题的任何其他建议?我想避免对整个 SMO 库进行全局锁定...

谢谢!

4

1 回答 1

0

我使用SMO,我学到的是,如果你想做一些常用的操作(脚本......)它很有用。但是如果你想真正管理数据库对象,最好使用系统存储过程(所以SMO会不是要理解的另一层)。使用存储过程允许您锁定数据或不锁定数据,这将是一个可能的解决方案

于 2012-08-05T19:30:14.467 回答