Marcello Miorelli Asked: 2025-02-01 01:16:53 +0800 CST2025-02-01 01:16:53 +0800 CST 2025-02-01 01:16:53 +0800 CST db_id() - 数据库 ID 可以改变吗? 772 我公司的一位开发人员设置了一个SQL 事件探查器,其中有一个基于数据库 ID 的过滤器。 他告诉我他正在寻找的数据库 ID已经改变。 有问题的数据库仍然存在,但现在不是 61 而是 60。 sql-server 1 个回答 Voted Best Answer Peter Vandivier 2025-02-01T02:12:28+08:002025-02-01T02:12:28+08:00 sys.databases.database_id不像 那样分配identity。而是使用可用的最小正整数。Repro 非常简单: create database a; create database x; create database b; drop database x; select * from sys.databases where database_id > 4; 如果您删除并重新创建b,database_id 则将减少 1。 drop database b; go create database b; 至于探查器问题 - 您可能应该提出一个单独的问题,并至少包括跟踪定义。在有实时探查器跟踪的情况下删除数据库不会产生您描述的错误。
sys.databases.database_id
不像 那样分配identity
。而是使用可用的最小正整数。Repro 非常简单:如果您删除并重新创建
b
,database_id
则将减少 1。至于探查器问题 - 您可能应该提出一个单独的问题,并至少包括跟踪定义。在有实时探查器跟踪的情况下删除数据库不会产生您描述的错误。