Sql Server中如何使用系统视图

60次阅读
没有评论

共计 1217 个字符,预计需要花费 4 分钟才能阅读完成。

Sql Server 中如何使用系统视图,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一:那些系统视图

1. 系统视图是干什么呢?

从名字上看就知道,系统视图嘛?猜的不错的话,就是存放一些 sqlserver 系统的一些信息,很好,恭喜你,答对了。

2. 都定义在哪呢?

为了让你眼见为实,下面截图看看,从截图中你可以看到,不管是“系统数据库”还是“用户数据库”都是有这些系统视图的,而且一眼扫下去发现连名字都一样。

3. 看看这些系统视图都能带给我什么福利?

Q1:我在维护一个系统的时候,我只知道有一个数据库中,有一个表的字段叫“state”,但我忘了是定义在那张表中?我该如何找出来?

A1:这个简单,在 sqlserver 里面提供了一个系统视图叫“INFORMATION_SCHEMA.COLUMNS”,下面我们截图看看。

  从这个系统视图名字中的这个 SCHEMA 这个单词可知,原来是一个保存表架构的视图,而且还有这个字段的“排位”,“默认值”这些特性,泥煤,是不是有一种很爽的感觉???

Q2: 我在 C# 代码中看到了一个存储过程名 CategoryInsert , 我想看它的源码,但是我的 table 中存储过程有几千个,总不能让我一个个的去找吧,,,拜托在系统视图中可有快捷的方法查看?

A2:so easy。。。告诉你吧,只有你想不到的,没有系统视图做不到,不就一个简简单单的看存储过程代码么?sys.sql_modules 就可以帮你实现。

Q3:这种方法好是好,但是 copy 的 definition 字段是没有格式化的。。。。大哥,上千行的 sql 哦。。。我特别想格式化的输出怎么办呀?谢谢了。

A3:确实如你所说,格式化输出的话,系统 View 只能帮你到这了,不过天无绝人之路,你可以使用系统存储过程,里面有一个神奇的 sp_helptext,可以祝你实现梦想,不用谢。

二:对系统视图的一些思考

在上面的代码中,我演示了两个系统 view,一个 proc 给我们带来的福利,那么仔细看一看,你就会有两个疑惑。。。。

1:系统 View 在哪定义的?

这个问题问的真好,从文章开头我们就知道,我的用户库 MYPETSHOP 是有很多系统 view 的,但是我真的没有定义这些 view 呀,老天可以给我作证,那问题就很神秘了,system view 到底从何而来?这个问题你也只有问 sqlserver 团队了,他们将 system view 都放入了一个隐藏的 resource 数据库,那这个数据库在哪呢?我给你找到。

找到了之后,我现在继续附加进来,如果你够聪明的话,你不能直接加载它,否则会报进程正在使用中,原因我想你也知道。

解决方法也很简单,我们做一份 copy 到 E 盘。然后附加这个 copy 就好了。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计1217字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)