系统库SQL Server 隐藏系统库资源数据库探索

概述特性如前所述,当我们 在 SSMS 的对象资源管理器中打开“系统数据库”时,我们只能看到四个数据库(master、 model、 msdb、 tempdb)

大家好,如果您还对系统库SQL Server 隐藏系统库资源数据库探索不太了解,没有关系,今天就由本站为大家分享系统库SQL Server 隐藏系统库资源数据库探索的知识,包括的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

我们看不到资源库出现。这个“隐藏”数据库是什么以及它的用途是什么?嗯,资源数据库是一个系统数据库,它使SQL Server 升级到新版本的过程变得更容易、更快捷。现在,让我们探讨一下资源数据库的一些功能。

1、资源数据库是只读数据库,包含所有系统对象

事实上,逻辑上位于每个数据库的sys 架构中的所有系统对象物理上都位于资源数据库中。例如,在SSMS中,如果我们在任何数据库中展开“Views”下的“System Views”,我们可以看到sys schema中的许多视图:

这些视图中的数据存储在资源数据库中,事实上,如果我们从这些视图之一读取数据,它将从资源数据库中读取:

SELECT [名称] 、[object_id] 、[principal_id] 、[schema_id] 、[parent_object_id] 、[type] 、[type_desc] 、[create_date] 、[modify_date] 、[is_ms_shipped] 、[is_published] 、[is_schema_published] FROM [ NewDB].[sys].[对象]

但是,如果我们尝试直接访问资源数据库,则会收到错误消息:

系统库SQL Server 隐藏系统库资源数据库探索

另外,我们只能从资源数据库中读取数据,无法更改。值得一提的是,资源数据库不存储用户数据、用户元数据或实例相关数据。

2、 资源数据库有助于将 SQL Server 升级到更新版本

3、资源数据库的 ID 是 32767

SQL Server 实例中的每个数据库都有一个ID。一个实例最多可以容纳32767个数据库。该数字也是资源库ID,并且对于任何实例中的任何资源库都是恒定的。因此,实际上,资源数据库被分配了实例中尽可能大的数据库ID。话虽如此,资源数据库及其ID 通过sys.databases 表不可见:

SELECT * FROM sys.databases 在结果中,我们可以看到所有系统和用户数据库都列出了它们的ID,但没有列出资源数据库:

使用DB_ID() 和DB_NAME() 函数时,有关资源数据库的信息也不可用

系统库SQL Server 隐藏系统库资源数据库探索

但是,相同的函数不会返回有关资源数据库的任何信息:

–资源数据库SELECT DB_ID( ‘resource’ ) AS ‘resource db DBID’ SELECT DB_NAME(32767) AS ‘resource’ 在两种情况下都返回NULL:

如果想查询资源数据库的一些信息,可以使用如下查询:

SELECT SERVERPROPERTY(‘ResourceVersion’) AS ‘ResourceVersion’ SELECT SERVERPROPERTY(‘ResourceLastUpdateDateTime’) AS ‘ResourceLastUpdateDateTime’ 结果显示资源数据库的版本以及资源数据库上次更新的时间:

4、 不支持移动资源数据库文件

资源数据库包含一个数据文件和一个日志文件,分别称为mssqlsystemresource.mdf 和mssqlsystemresource.ldf。

系统库SQL Server 隐藏系统库资源数据库探索

这些文件的位置是“驱动器号:\Program Files\Microsoft SQL Server\MSSQLversion num.instance_name\MSSQL\Binn\”。在我们的示例中,此位置为“C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn\”,因此我们可以在此位置找到这些文件:

我们可以使用以下查询检索资源数据库文件的位置:

SELECT * FROM sys.sysaltfiles WHERE dbid=32767 正如我们之前讨论的,32767 是资源数据库ID。

用户评论

系统库SQL Server 隐藏系统库资源数据库探索
黑夜漫长

我一直好奇MSSQL有哪些隐藏的功能,这个文章写的挺透彻!之前就听说过Resource Database这个库,但是不知道具体用途和结构,现在终于弄明白了。

    有13位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
短发

感觉这篇文章有点专业术语比较多,对于小白不太友好,不过学习了一下SQL Server内部机制也是很有必要滴!

    有7位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
又落空

我用的是旧版本的SQL Server经常遇到一些奇怪的问题,后来发现可能是Resource Database出现了问题。这个文章分析得很细致,让我找到了一些可能的原因,希望可以解决我的难题。

    有8位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
米兰

我一直以为系统库就是系统里常用的几个库而已,没想到还有这么个隐藏的!学习一下确实能拓宽视野,谢谢分享!

    有14位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
致命伤

资源数据库对SQL Server来说是必须了解的东西,毕竟它是支撑整个系统运行的关键。文章深度剖析每个方面的机制还是很有借鉴意义的,值得点赞!

    有18位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
半梦半醒i

我觉得这个Resource Database 其实不太应该被轻易操作吧?它本身就是用来支持其他库的,如果不小心弄坏了可能对整个数据库造成影响啊!

    有13位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
煮酒

这篇文章让我对SQL Server内部结构有了更深层次的理解,原来还有这么多的“黑科技”隐藏在里面!

    有13位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
走过海棠暮

其实很多时候,系统库的变化也会带来一些意想不到的影响,比如新的版本可能带来一些兼容性问题。这个文章提到了这个问题,提醒我们要注意这些隐患。

    有12位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
莫飞霜

我平时主要开发应用,不太接触系统数据库的管理。看了这篇文章后,感觉可以稍微学一点相关知识,应对未来的工作挑战!

    有12位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
熟悉看不清

我一直想了解系统库是如何工作的。这篇博文写的非常详细,能看出作者对SQL Server有着很深的理解和实践经验!

    有18位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
病房

感觉文章分析的太深入了,对于新手读者来说可能比较难理解。能不能提供一些更通俗易懂的解释呢?

    有11位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
景忧丶枫涩帘淞幕雨

这个Resource Database 听起来好像有点神秘啊,是专门用来存放敏感信息的吗? 而且这么特殊的库权限设置肯定很严格吧?

    有10位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
拽年很骚

我用SQL Server管理着很多大型数据库,对系统库的功能了解很重要。这篇文章内容丰富实用,能够让我更好地掌握数据库管理技巧!

    有14位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
红尘滚滚

资源数据库的隐藏特性确实让人感到好奇,但同时也要提醒自己不要任意修改或操作这些敏感信息!

    有11位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
心悸╰つ

我觉得文章提到的这些安全风险非常重要,在日常工作中需要注意这些问题,避免数据泄露等安全隐患发生。

    有15位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
墨染殇雪

这篇文章让我了解到SQL Server的强大功能,原来系统库里还隐藏着这么多秘密!对数据库管理有了新认识!

    有20位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
眉黛如画

资源数据库这种特殊的功能模块确实挺有意思的,但也需要谨慎处理。文章分析的很到位,提醒我们需要注意安全性问题。感谢分享!

    有14位网友表示赞同!

系统库SQL Server 隐藏系统库资源数据库探索
浮殇年华

我个人更喜欢简单的文章风格,这篇博文偏专业了一些,希望能提供一些浅显易懂的内容解释。

    有11位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/164349.html

Like (0)
小su的头像小su
Previous 2024年9月21日 上午9:16
Next 2024年9月21日 上午9:25

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注