Почему перестали работать ключи командной строки SQL Server Management Studio 2008? - PullRequest
10 голосов
/ 21 июля 2010

Я всегда сильно полагался на ярлыки 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 не очень помогла в этой теме.

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

Ответы [ 4 ]

7 голосов
/ 30 июля 2010

Я бросил соответствующую DLL на рефлектор, и он вернул мне код внизу этого поста, к сожалению, в коде нет ничего очевидного, что облегчает понять, почему он перестал работать для вас (нене было бы хорошо, если бы 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;
}
1 голос
/ 26 сентября 2012

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

0 голосов
/ 24 июля 2010

Я использую 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.

0 голосов
/ 24 июля 2010

Работает нормально так:

sqlwb.exe -S . -E -d dbName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...