大家好,如果您还对系统库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].[对象]
但是,如果我们尝试直接访问资源数据库,则会收到错误消息:
另外,我们只能从资源数据库中读取数据,无法更改。值得一提的是,资源数据库不存储用户数据、用户元数据或实例相关数据。
2、 资源数据库有助于将 SQL Server 升级到更新版本
3、资源数据库的 ID 是 32767
SQL Server 实例中的每个数据库都有一个ID。一个实例最多可以容纳32767个数据库。该数字也是资源库ID,并且对于任何实例中的任何资源库都是恒定的。因此,实际上,资源数据库被分配了实例中尽可能大的数据库ID。话虽如此,资源数据库及其ID 通过sys.databases 表不可见:
SELECT * FROM sys.databases 在结果中,我们可以看到所有系统和用户数据库都列出了它们的ID,但没有列出资源数据库:
使用DB_ID() 和DB_NAME() 函数时,有关资源数据库的信息也不可用
但是,相同的函数不会返回有关资源数据库的任何信息:
–资源数据库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。
这些文件的位置是“驱动器号:\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。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/164349.html
用户评论
黑夜漫长
我一直好奇MSSQL有哪些隐藏的功能,这个文章写的挺透彻!之前就听说过Resource Database这个库,但是不知道具体用途和结构,现在终于弄明白了。
有13位网友表示赞同!
短发
感觉这篇文章有点专业术语比较多,对于小白不太友好,不过学习了一下SQL Server内部机制也是很有必要滴!
有7位网友表示赞同!
又落空
我用的是旧版本的SQL Server经常遇到一些奇怪的问题,后来发现可能是Resource Database出现了问题。这个文章分析得很细致,让我找到了一些可能的原因,希望可以解决我的难题。
有8位网友表示赞同!
米兰
我一直以为系统库就是系统里常用的几个库而已,没想到还有这么个隐藏的!学习一下确实能拓宽视野,谢谢分享!
有14位网友表示赞同!
致命伤
资源数据库对SQL Server来说是必须了解的东西,毕竟它是支撑整个系统运行的关键。文章深度剖析每个方面的机制还是很有借鉴意义的,值得点赞!
有18位网友表示赞同!
半梦半醒i
我觉得这个Resource Database 其实不太应该被轻易操作吧?它本身就是用来支持其他库的,如果不小心弄坏了可能对整个数据库造成影响啊!
有13位网友表示赞同!
煮酒
这篇文章让我对SQL Server内部结构有了更深层次的理解,原来还有这么多的“黑科技”隐藏在里面!
有13位网友表示赞同!
走过海棠暮
其实很多时候,系统库的变化也会带来一些意想不到的影响,比如新的版本可能带来一些兼容性问题。这个文章提到了这个问题,提醒我们要注意这些隐患。
有12位网友表示赞同!
莫飞霜
我平时主要开发应用,不太接触系统数据库的管理。看了这篇文章后,感觉可以稍微学一点相关知识,应对未来的工作挑战!
有12位网友表示赞同!
熟悉看不清
我一直想了解系统库是如何工作的。这篇博文写的非常详细,能看出作者对SQL Server有着很深的理解和实践经验!
有18位网友表示赞同!
病房
感觉文章分析的太深入了,对于新手读者来说可能比较难理解。能不能提供一些更通俗易懂的解释呢?
有11位网友表示赞同!
景忧丶枫涩帘淞幕雨
这个Resource Database 听起来好像有点神秘啊,是专门用来存放敏感信息的吗? 而且这么特殊的库权限设置肯定很严格吧?
有10位网友表示赞同!
拽年很骚
我用SQL Server管理着很多大型数据库,对系统库的功能了解很重要。这篇文章内容丰富实用,能够让我更好地掌握数据库管理技巧!
有14位网友表示赞同!
红尘滚滚
资源数据库的隐藏特性确实让人感到好奇,但同时也要提醒自己不要任意修改或操作这些敏感信息!
有11位网友表示赞同!
心悸╰つ
我觉得文章提到的这些安全风险非常重要,在日常工作中需要注意这些问题,避免数据泄露等安全隐患发生。
有15位网友表示赞同!
墨染殇雪
这篇文章让我了解到SQL Server的强大功能,原来系统库里还隐藏着这么多秘密!对数据库管理有了新认识!
有20位网友表示赞同!
眉黛如画
资源数据库这种特殊的功能模块确实挺有意思的,但也需要谨慎处理。文章分析的很到位,提醒我们需要注意安全性问题。感谢分享!
有14位网友表示赞同!
浮殇年华
我个人更喜欢简单的文章风格,这篇博文偏专业了一些,希望能提供一些浅显易懂的内容解释。
有11位网友表示赞同!