SqlCmd 程序执行完毕后,可以查看系统环境变量 ERRORLEVEL,若返回值为 0 代表执行结果无误,若值不等于 0,则代表有错误发生,程序代码列表2-4的执行结果如图2-32所示:
由于笔者在程序代码列表2-4中使用了底层命令的 Pause,因此你在执行过程中会需要按下任意键后才会继续执行。执行完毕后,你可以通过 Notepad 工具程序打开 Customers.log 和 Orders.log 两个普通文本文件,观察通过变量设置 T-SQL 语法内容的执行结果。
通过如上的批次执行方式,你可以在安装或维护日常 SQL Server 数据库时,周期地以后台的方式执行,而后查看执行记录来得知维护工作的结果。
最后,若你有兴趣看看被系统隐藏起来的对象,可以在任意的数据库内执行如下的语法:
select * from sys.objects where type='s'
将会发现一大堆系统数据表名称,其 schema 名称为 sys。但在一般的连接内,都无法看到这些数据表,若直接查询会得到如下的报错信息:
信息 208,级别 16,状态 1,行 1
无效的对象名称 'sys.sysfiles1'。
这时,你就可以通过 SqlCmd 工具程序搭配 -A 参数连接到 SQL Server 服务实例,便能够查看这些系统数据表。
另外,不晓得你是否注意到 SQL Server 服务实例启动时,所输出的 Log 会有一行如下的信息:
2005-12-23 14:05:52.75 spid5s Starting up database 'mssqlsystemresource'.
当你到存放数据库文件的目录下,默认的路径:
C:/Program Files/Microsoft SQL Server/MSSQL.n/MSSQL/Data
也会看到 mssqlsystemresource.mdf 和 mssqlsystemresource.ldf 两个数据库文件。但在任何环境都看不到这个系统数据库,包括普通单纯的 SqlCmd -A 模式也不行。
SQL Server 2005 新增了一个存放系统对象的数据库,如系统视图表、存储过程等,其名称叫 mssqlsystemresource。由于系统对象统一放在这个数据库内,再对应给其他数据库使用,因此以后改版,上 Service Pack 时,只要换掉这个数据库即可。
若你有兴趣研究该数据库,可以先将 SQL Server 服务实例停止执行,而后复制mssqlsystemresource.mdf 和 mssqlsystemresource.ldf 两个数据库文件。在此,笔者分别命名为 Copy_Resource.mdf 和 Copy_Resource.ldf,而后重新启动 SQL Server 服务实例,并通过如程序代码列表2-5的 T-SQL 语法将该复制的数据库文件附加成另一个数据库,以后就可以研究其内部了 J
程序代码列表2-5 附加资源数据库以供研究各种系统对象的设计方式
DECLARE @path NVARCHAR(200),@mdf NVARCHAR(200),@ldf NVARCHAR(200)
SELECT @path=REPLACE(filename,'master.mdf','') FROM sys.sysfiles WHERE fileid=1
SET @mdf=@path + N'Copy_Resource.mdf'
SET @ldf=@path + N'Copy_Resource.ldf'
EXEC sp_attach_db 'CopyResource',@mdf,@ldf
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。