【问题标题】:Why did SQL Server Management Studio 2008 command-line switches stop working?为什么 SQL Server Management Studio 2008 命令行开关停止工作?
【发布时间】:2016-03-14 02:33:36
【问题描述】:

我一直非常依赖 SSMS 的 Windows 快捷方式,其中包括命令行开关,使我能够快速打开特定服务器上的特定数据库。例如

Ssms.exe -S 123.123.123.123 -U sa -P goodpassword -d DbName

Ssms.exe -S . -E -d DbName

这些突然停止工作。我从 SSMS 收到此错误:

Failed to create new SQL Server script.
Object reference not set to an instance of an object. (AppIDPackage)
Program Location: at Microsoft.SqlServer.Management.UI.VSIntegration.
AppIDPackage.AppIDPackage.OpenConnectionDialogWithGlobalConnectionInfo()

我仍然可以在没有命令行开关的情况下启动 SSMS,然后手动建立连接。一些命令行开关仍然有效,例如

ssms.exe -nosplash

工作正常。

使用 -S、-E 和 -d 命令行开关的任意组合都会出现相同的错误。我是否指向有效的服务器或数据库,或者我的登录凭据是否正确都没有关系。我可以指向旧版本的 SSMS,它工作正常,但不是 2008 版本。

This post on MSDN's forums 是我在网上找到的全部内容,但 MS 在此线程上并没有太大帮助。

有什么想法可以开始解决这个问题吗?我在不同的服务器上使用很多不同的数据库,我真的很依赖这些快捷方式。

【问题讨论】:

    标签: command-line ssms sql-server-2008


    【解决方案1】:

    我将有问题的 DLL 扔给了反射器,它把这篇文章底部的代码还给了我,遗憾的是,代码中没有任何明显的东西可以很容易地找出它为什么停止为你工作(会如果 Microsoft 将调试符号与他们生成的针对 CLR 编写的任何东西一起发布,那不是很好吗?)。

    有几个地方的代码让我想知道您是否有损坏的“最近使用的服务器”列表或类似的东西,也许您可​​以尝试按照this question 中列出的步骤清除它们,看看是否这有帮助。

    private void OpenConnectionDialogWithGlobalConnectionInfo()
    {
        if ((ServiceCache.GlobalConnectionInfo != null) && (ServiceCache.GlobalConnectionInfo.Count != 0))
        {
            try
            {
                using (ConnectionDialog dialog = new ShellConnectionDialog())
                {
                    IDbConnection connection;
                    dialog.ImportRegisteredServersOnFirstLaunch = true;
                    dialog.AddServer(new SqlServerType());
                    UIConnectionInfo connectInfo = ServiceCache.GlobalConnectionInfo[0].Copy();
                    if (dialog.TryToConnect(this.PopupOwner, ref connectInfo, out connection) == DialogResult.OK)
                    {
                        this.ScriptFactory.CreateNewBlankScript(ScriptType.Sql, connectInfo, connection);
                    }
                }
            }
            catch (Exception exception)
            {
                ExceptionMessageBox box = new ExceptionMessageBox(new ApplicationException(SRError.FailedToCreateNewSqlScript, exception));
                box.Caption = SRError.MessageBoxCaption;
                box.Show(this.PopupOwner);
            }
        }
        ServiceCache.GlobalConnectionInfo = null;
    }
    

    【讨论】:

    • 太棒了 - 我点击了你提到的问题的链接,它把我带到了这个文件夹 X:\Users\Herb Caudill\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell。我将那里的各种首选项和设置文件移动到另一个文件夹,并且能够正常打开 SSMS。通过有选择地添加文件,我将问题缩小到windows.prf 文件,其中显然有一些 SSMS 不喜欢的东西。我让它重新创建该文件,我又重新开始工作了。谢谢!!
    • 很高兴我能帮上忙,老实说,我没想到这会回答你的问题,不过,嘿嘿! :) 反射器再次证明了它的价值。
    • @Rob and Herb,我不知道为什么我会被这个问题困扰,但对我来说,总是当我尝试注册服务器时,我会收到相同类型的消息,但带有“程序位置”设置为 RegisteredServers。在过去,我最终卸载了 SSMS 并重新安装。我们都知道那是多么有趣。我使用了 Herbs 方法并且能够清除它。感谢您为我节省了数小时的时间。
    【解决方案2】:

    ObjectExplorer 窗口必须打开。不要隐藏。 我这样解决了我的问题:)

    【讨论】:

    • 这应该看起来像评论......不要在一行中回答。 ;-)
    • 如果答案是 10 个字,那么答案就是 10 个字。
    【解决方案3】:

    像这样正常工作:

    sqlwb.exe -S . -E -d dbName
    

    【讨论】:

    • sqlwb.exe 是 SQL Server Management Studio 2005 - ssms.exe 是 2008。我安装了 2005,但我更喜欢使用 2008。
    【解决方案4】:

    我正在对 SQL2005 数据库使用 SSMS2008,并且 ssms 命令行在这里可以正常工作。

    这是 SSMS 关于对话框生成的版本信息:

    Microsoft SQL Server Management Studio              10.0.1600.22 ((SQL_PreRelease).080709-1414 )
    Microsoft Data Access Components (MDAC)             6.0.6001.18000 (longhorn_rtm.080118-1840)
    Microsoft MSXML                                     2.6 3.0 5.0 6.0 
    Microsoft Internet Explorer                         8.0.6001.18813
    Microsoft .NET Framework                            2.0.50727.3074
    Operating System                                    6.0.6001
    

    有几个来源(MSSqlTipshere)表明命令行参数在sqlwb.exe 上可用。然而,ssms 的在线图书页面指出,这些选项在 ssms 上可用。

    【讨论】:

    • 很高兴知道它对您有用。直到最近它才为我工作。根据 MSDN msdn.microsoft.com/en-us/library/ms162825.aspx,相同的命令行开关应该适用于 ssms.exe,就像适用于 sqlwb.exe。
    • 这是我关于对话框中的信息: Microsoft SQL Server Management Studio 10.50.1600.1 Microsoft Data Access Components (MDAC) 6.1.7600.16385 Microsoft MSXML 3.0 4.0 5.0 6.0 Microsoft Internet Explorer 8.0.7600.16385 Microsoft .NET Framework 2.0.50727.4927 操作系统 6.1.7600
    猜你喜欢
    • 1970-01-01
    • 2012-01-08
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    相关资源
    最近更新 更多