在 SSMS 中附加数据库会出错

IT *_*her 5 sql-server permissions ssms sql-server-2008-r2

我正在使用 SSMS 和具有足够权限的用户访问 SQL Server。

当该用户尝试使用 SSMS 附加数据库时(通过右键单击数据库节点,然后单击附加),他们会收到一条错误消息:

无法显示请求的对话框。

参数名称:nColIndex

实际值为 -1。(Microsoft.SqlServer.GridControl)

  在 Microsoft.SqlServer.Management.UI.Grid.GridControl.SetColumnWidthInternal
(Int32 nColIndex, GridColumnWidthType widthType, Int32 nWidth)
...
  在 Microsoft.SqlServer.Management.SqlManagerUI.AttachDatabase.SetGridColumnWidth
(SqlManagerUIDlgGrid grid, Double[] columnWidthRatio, Int32 columnIndex)
...

如果同一个用户使用如下的 T-SQL 命令,那么它工作正常:

CREATE DATABASE [hgnx] ON 
( FILENAME = N'E:\db\hgnx.mdf' ),
( FILENAME = N'E:\db\hgnx_log.ldf' )
FOR ATTACH
Run Code Online (Sandbox Code Playgroud)

Aar*_*and 13

这看起来根本不像是权限问题,而是 UI 中的错误。

如果您使用的是 Management Studio Express,那么您应该考虑两个选项:

  1. 确保您使用的是最新的服务包(是的,它们也适用于客户端工具),也许还有最新的累积更新
  2. 2008/2008 R2 版工具中的许多错误尚未修复,而且可能永远不会修复。没关系,Express 版本的功能有限。所以停止使用 2008 R2 中残缺不全的 Express 版本;从SQL Server 2012 Service Pack 1 开始,Management Studio 的全功能版本现在是完全免费的。是的,您可以使用最新版本的工具管理所有 2005、2008、2008 R2 和 2012 实例。

事实上,事实证明(感谢@Justicator),此错误仅在 2012 版工具中修复,因此看起来选项 (2) 是您最好的选择(或者,只是不将 UI 用于此类任务)。