Почему ключи командной строки SQL Server Management Studio 2008 перестали работать?

Я всегда сильно полагался на быстрые клавиши Windows для SSMS, которые включают в себя ключи командной строки, позволяющие мне быстро открыть определенную базу данных на определенном сервере. Например

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 года.

Это сообщение на форумах MSDN - это все, что я нашел в Интернете, но MS не очень помог в этой теме.

Любые идеи, как я могу это исправить? Я работаю с множеством разных баз данных на разных серверах, и я действительно полагаюсь на эти ярлыки.

Ответ 1

Я выбрал DLL на рефлекторе, и он вернул мне код внизу этого сообщения, к сожалению, в коде нет ничего очевидного, что позволяет легко разобраться, почему он перестает работать на вас (wouldn "Было бы хорошо, если бы Microsoft отправила отладочные символы на все, что они производят, написанные против CLR?).

Есть несколько мест, где код заставляет задуматься, есть ли у вас поврежденный список "недавно использованных серверов" или что-то подобное, возможно, вы можете попробовать выполнить шаги, перечисленные в этот вопрос, чтобы очистить их и посмотреть, помогает ли это.

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;
}

Ответ 2

Окно ObjectExplorer должно быть открытым. Не скрывайте. Я решил свою проблему следующим образом:)

Ответ 3

Работает так:

sqlwb.exe -S . -E -d dbName

Ответ 4

Я использую SSMS2008 для базы данных SQL2005, и здесь отлично работает командная строка ssms.

Это информация о версии, созданная в диалоговом окне SSMS About:

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

Существует несколько источников (MSSqlTips и здесь), в которых аргументы командной строки доступны в sqlwb.exe. Однако страница "Книги онлайн" для ssms утверждает, что параметры доступны на ssms.