标签: system-databases

master、tempdb、model 和 msdb 是否可以分别具有 1、2、3、4 以外的 database_id?

据我所知,SQL Server系统数据库总是具有相同的 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
Run Code Online (Sandbox Code Playgroud)

我在两个不同的实例上运行了该查询,一个是 SQL Server 2016,另一个是 SQL Server 2005,并且都返回了相同的结果。

问题:

  1. 是否有任何情况(或 sql server 版本)系统数据库 master、tempdb、model 和 msdb 的 database_id 分别不是 1、2、3、4?
  2. 真的可以相信我列出的架构在任何 SQL Server 实例上都具有相同的 ID,以便我可以根据这些 ID 编写维护脚本吗?

sql-server system-databases objectid

8
推荐指数
2
解决办法
1005
查看次数

无法获得数据库“模型”的排他锁 - 谁在使用它?

尝试运行以下查询以创建新数据库时:

    CREATE DATABASE [Lunch]
     CONTAINMENT = NONE
     ON  PRIMARY 
    ( NAME = N'Lunch', 
FILENAME = N'E:\Data Files\Lunch.mdf' , 
SIZE = 110592KB , FILEGROWTH = 1048576KB ), 
     FILEGROUP [DATA] 
    ( NAME = N'Lunch_Data', 
FILENAME = N'E:\Data Files\Lunch_Data.ndf' , 
SIZE = 110592KB , FILEGROWTH = 1048576KB ), 
     FILEGROUP [NONCLUSTERED_INDEXES] 
    ( NAME = N'Lunch_nonclusteredindexes', 
FILENAME = N'E:\Data Files\Lunch_nonclusteredindexes.ndf' , 
SIZE = 110592KB , FILEGROWTH = 1048576KB )
     LOG ON 
    ( NAME = N'Lunch_log', 
FILENAME = N'F:\logFiles\Lunch_log.ldf' , 
SIZE = 524288KB , 
FILEGROWTH = …
Run Code Online (Sandbox Code Playgroud)

sql-server locking system-databases sql-server-2016

5
推荐指数
1
解决办法
9199
查看次数

更改驱动器号(包含系统数据库)

是否可以安全地更改仅包含系统数据库的卷的驱动器号?

应该采取哪些预防措施以及应该如何做?我知道我可以直接转到计算机管理 > 存储并更改驱动器号,但会对 SQL Server 操作产生负面影响吗?

sql-server disk-structures system-databases

4
推荐指数
1
解决办法
1万
查看次数

如果系统数据库丢失/丢失,SQL Server 是否会重新创建系统数据库?

我们有一个每 24 小时运行一次的第三方服务器备份工具,它备份所有内容(文件和数据库,为裸机恢复做准备)。经过大量调查,发现该工具使用了非copy_only备份,从而破坏了系统数据库和我们自己的日志链。

(我一直在研究是否应该备份系统数据库,由于他们持有的关于 SQL Server 一般的数据(例如用户、代理作业等),共识通常是肯定的。这不是关于他们的内容,但如果由于我描述的情况而在恢复后丢失会发生什么)。

为了阻止这种犯罪,我禁用了执行数据库备份的工具,所以现在它只执行文件备份(MDF/LDF 文件除外)。然后我安排 SQL 代理每小时运行一次备份,然后将它们发送到我的私有云。

如果服务器完全故障,并且需要裸机备份,我希望在 SQL 开始备份时数据库不会在那里,因为它们没有被工具备份/恢复(尽管我安全地拥有它们备份)。

此时实际发生了什么?SQL Server 是否会重新创建系统数据库,然后我可以将其还原?或者,它是否只是拒绝启动而我会遇到麻烦?

sql-server restore sql-server-2012 system-databases

4
推荐指数
1
解决办法
1768
查看次数

找到资源系统数据库

有一个名为资源数据库的数据库,我知道它是只读的,包含有关系统对象的信息,并且不保存任何用户相关的数据或元数据。

我正在使用 SSMS 来管理我的数据库实例,但我只能看到四个系统数据库 - master、model、msdb、tempdb。我想知道在哪里可以找到使用 SSMS 的资源数据库?或者数据库故意对用户不可见?

sql-server ssms sql-server-2012 system-databases

4
推荐指数
2
解决办法
1486
查看次数

在哪里可以获得 SQL Server 2012 的 master.dacpac 文件?

我将 Visual Studio 2012 Professional 与 SQL Server Data Tools 与 SQL Server 2012 标准版数据库实例一起使用。
我无法在我的开发机器或托管 SQL Server 实例的服务器上找到 master.dacpac 文件。

我怎样才能获得这个文件,这样我就可以摆脱如下警告:

SQL71502: Procedure: <ProcedureName> has an unresolved reference to object [sys].[objects]  
Run Code Online (Sandbox Code Playgroud)

sql-server-2012 ssdt visual-studio-2012 system-databases

3
推荐指数
1
解决办法
4654
查看次数

移动模型数据库后 SQL Server 2008 R2 无法启动

移动模型数据库后,SQL Server 2008 R2 无法启动。有任何想法吗?错误:945,严重性:14,状态:2。有什么想法吗?Sql 2008 R2 不会以trace -f -T3608 或单用户模式-m 启动。需要参数来启动短信以将模型移回原处。

sql-server sql-server-2008-r2 system-databases

1
推荐指数
2
解决办法
2923
查看次数

在 Microsoft SQL Server 中还原数据库是否会将对象添加到资源数据库?

据我所知,资源数据库包含有关其服务器实例中所有对象的信息,因此我认为当您从备份文件恢复数据库时,该过程的一部分是在服务器资源中注册其对象是很自然的数据库,但我找不到有关该主题的任何具体信息,也无法在本地对其进行测试。

sql-server metadata restore system-databases sys

1
推荐指数
1
解决办法
152
查看次数