即使模型设置为 false,自动关闭属性也会在附加 db 后重置为 true

IT *_*her 1 database-design sql-server sql-server-2008-r2

我正在使用 SQL Server Express 2008 R2。新创建的数据库的自动关闭属性将设置为与模型 db 相同的值。在我的例子中,我已经将模型的 autoclose 设置为 false,这样当我创建一个新数据库时,它也会将 autoclose 设置为 false。

如果我将自动关闭设置为 false 的数据库分离然后附加它,则自动关闭设置为 true。我期望 autoclose 为假,因为它将从模型数据库继承其属性。在我的情况下,分离和附加数据库会导致 autoclose 属性设置为 true。

为什么会这样?这个问题有什么解决办法吗?

Aar*_*and 8

附加数据库根本不涉及模型,因此没有自动方法来强制您的模型数据库设置应用于您以后附加的任何数据库。这仅用于CREATE您创建的数据库,以及您创建的没有FOR ATTACH或 的更严格的数据库FOR ATTACH_REBUILD_LOG

在 Express 中,附加的数据库会自动附加为AutoClose = true,因此您无法使用模型或附加过程本身将其设置为 false。您需要在附加后手动将其设置为 false,或者我想您可以设置一个定期作业来检查自上次作业运行以来创建的任何数据库上是否启用了此设置(或没有过滤器) all),并将其设置为false。

为什么 Express 以这种方式工作?因为 Express 主要是为本地开发而设计的,并且为了节省开发人员工作站上的资源(与生产服务器相比,工作站通常没有大量资源可供备用),所以它只保存正在积极使用的开放数据库。联机丛书中的这个主题有助于解释,尽管它没有明确说明附加到 Express 的任何数据库都将此属性设置为 true。

如果您不想处理这个问题(以及其他 Express 限制),您可以始终使用 Developer Edition。