65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.60/5 (4投票s)

2007 年 9 月 27 日

CPOL

2分钟阅读

viewsIcon

31130

downloadIcon

247

一种获取域内 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。

  1. 将 zip 文件中的所有文件提取到同一个文件夹。
  2. 打开 SQLServerReport.vbs 文件,并将此行中的数字 2 更改为
    Dim ServerNames(2)

    更改为比你拥有的 SQL 实例数少 1 的数字。

  3. 更改行
    ServerNames(0) = "YourSQLServer1Name"

    将 "YourSQLServer1Name" 替换为你的 SQL Server 服务器。如果是默认实例,你只需要指定服务器名称。如果是命名实例,你需要指定服务器名称,然后加上反斜杠和实例名称。
    例如:SQLServer1\SencondSQLInstance

  4. ServerNames(1) 等进行重复,根据需要添加更多。
  5. 更改行中的路径
    const EXCEL_FILE_LOCATION = "C:\Scripts\SQL Server Report.xls"

    以反映你提取 Excel 文件到的位置。

  6. 最后,启动一个 DOS 提示符,导航到存储程序的目录,然后输入
    cscript SQLServerReport.wsf

    并按回车键。

过一会儿,Excel 将弹出并用从 SQL Server 提取的数据填充自身。然后它将保存电子表格并关闭。

历史

  • 2007 年 9 月 27 日:初始发布
© . All rights reserved.