试图通过缩小 WSUS 数据库的大小来恢复一些磁盘空间,或者至少弄清楚它为什么这么大,我尝试连接到 SQL Server Management Studio 中的 Windows 内部数据库(使用\.\pipe\mssql$microsoft ##ssee\sql\query数据库名称我见过在多个地方引用)并得到一个错误:
无法连接到 \.\pipe\mssql$microsoft##ssee\sql\query。
附加信息:
用户 '[ ourdomain ]/[ myusername ]' 登录失败。(Microsoft SQL Server,错误:18456)
服务器名称:\.\pipe\mssql$microsoft##ssee\sql\query
错误号:18456
严重性:14
状态:1
行号:65536
我的帐户具有域管理员权限,所以我不明白为什么它不起作用。它给我的帮助链接说“如果您的错误指示状态 1,请联系您的 SQL Server 管理员”(不幸的是,他是我)。
我还从这里尝试了 WsusDBMaintenance 脚本,它显然应该可以正常工作,并得到相同的“用户登录失败”消息。
更新:我在错误日志中找到了相应的条目,上面写着:
2009-10-09 14:13:51.30 登录错误:18456,严重性:14,状态:11。2009-10-09 14:13:51.30 用户“ [域] \ [用户] ”的 登录登录失败。[客户:<命名管道>]
它在这里说状态 11 =“有效登录但服务器访问失败”。
由于这是 Windows 2008 服务器,因此很可能是用户访问控制导致了问题。
当您要连接实例时,右键单击 SSMS 并以管理员身份运行。并给出上面的name pipe,应该就能进去了。
这里有两种可能。一是简单的身份验证问题;另一个与错误中的州代码有关。
首先,与早期版本的 SQL Server 不同,SQL Server 2008 不会在安装时创建 BUILTIN\Administrators 组,该组用于授予所有域管理员对数据库服务器的完全权限。您必须配置具有管理员权限的每个用户。如果您没有这样做,您可能需要以具有完全权限的用户身份登录 - WSUS 帐户(取决于您授予的权限)或 SQL Server 服务帐户(假设您使用域帐户)。
其次,SQL Server 2008 内部错误日志中反映的状态码始终为1,无论原因如何。相应的 Windows 错误日志消息将具有更准确地反映登录失败原因的状态代码。 这篇文章很好地解释了可能的状态。