据我所知, SQL Server System Databases始终具有相同的 ID,并且我在 Internet 上看到许多维护脚本依赖谓词WHERE database_id > 4
将它们从脚本的操作中排除。
另外,如果我SELECT name, schema_id FROM sys.schemas;
在一个新的用户数据库上运行,我会得到:
name schema_id
dbo 1
guest 2
INFORMATION_SCHEMA 3
sys 4
db_owner 16384
db_accessadmin 16385
db_securityadmin 16386
db_ddladmin 16387
db_backupoperator 16389
db_datareader 16390
db_datawriter 16391
db_denydatareader 16392
db_denydatawriter 16393
我在两个不同的实例上运行该查询,一个是 SQL Server 2016,另一个是 SQL Server 2005,两者都返回了相同的结果。
问题:
- 是否存在系统数据库 master、tempdb、model 和 msdb 的 database_id 分别不是 1、2、3、4 的情况(或 sql server 版本)?
- 我真的可以相信我列出的架构在任何 SQL Server 实例上总是具有相同的 ID,以便我可以根据这些 ID 编写维护脚本吗?