一种获取域内 SQL Server 概览的方法






3.60/5 (4投票s)
一种获取域内 SQL Server 概览的方法
引言
最近,我有幸接手了 34 台 SQL Server 服务器。没有任何文档,事实上他们甚至不清楚网络上有多少台服务器,而且每台服务器都由不同部门的不同能力和理解水平的人员设置。数据库设置完毕后,就被搁置不用,只有在几个月后日志文件耗尽所有磁盘空间,因为没有进行备份时,才会出现问题。
试图使用企业管理器来了解情况证明耗时费力。我需要的是一份快速报告,让我对所有服务器上的情况有所了解,以便制定行动计划。因此,最终我编写了一个小的 VBScript 程序来实现这一目标。
Using the Code
首先,你需要获取要调查的域中所有服务器的列表。有很多方法可以做到这一点,但我使用的方法是使用随 SQL Server 2005 附带的 osql 实用程序。默认情况下,它可以在 c:\program files\microsoft SQL Server\90\tools\binn 文件夹中找到。
这将列出域中的所有 SQL Server 服务器,如果你足够幸运,还会列出所有实例。只需启动一个 DOS 提示符,导航到 binn 文件夹,然后输入 osql -L
即可获取列表。
在我的域中,osql 列出了所有服务器,但没有检测到所有实例,因此在识别服务器后,请查看注册表键
HKLM\Software\microsoft\Microsoft SQL Server
并查看 InstalledInstances
值,该值列出了服务器上运行的所有实例。
现在你已经获得了服务器列表,就可以生成报告了。你需要服务器的管理员访问权限和 SQL Server 实例的 sa 访问权限,以及一台安装了 Excel 2003 的 PC。
- 将 zip 文件中的所有文件提取到同一个文件夹。
- 打开 SQLServerReport.vbs 文件,并将此行中的数字 2 更改为
Dim ServerNames(2)
更改为比你拥有的 SQL 实例数少 1 的数字。
- 更改行
ServerNames(0) = "YourSQLServer1Name"
将 "
YourSQLServer1Name
" 替换为你的 SQL Server 服务器。如果是默认实例,你只需要指定服务器名称。如果是命名实例,你需要指定服务器名称,然后加上反斜杠和实例名称。
例如:SQLServer1\SencondSQLInstance - 对
ServerNames(1)
等进行重复,根据需要添加更多。 - 更改行中的路径
const EXCEL_FILE_LOCATION = "C:\Scripts\SQL Server Report.xls"
以反映你提取 Excel 文件到的位置。
- 最后,启动一个 DOS 提示符,导航到存储程序的目录,然后输入
cscript SQLServerReport.wsf
并按回车键。
过一会儿,Excel 将弹出并用从 SQL Server 提取的数据填充自身。然后它将保存电子表格并关闭。
历史
- 2007 年 9 月 27 日:初始发布