Подтвердить что ты не робот

SQL Server SMO жалуется на отсутствующую DLL

Хорошо, я просмотрел веб-сайт, BOL, различные форумы, и я не ближе к ответу... надеюсь, вы, прекрасные люди, можете протянуть руку...

У нас есть около дюжины SQL-серверов (некоторые 2k, некоторые из 2005) в сети. Я использую объекты SMO в приложении .NET для получения стандартной информации. Возможно, у моей проблемы сводится к отсутствующей DLL - Microsoft.SqlServer.BatchParser.dll. Однако эта DLL не была связана с другими SQL-библиотеками (Microsoft.SqlServer.ConnectionInfo.dll, Microsoft.SqlServer.Smo.dll, Microsoft.SqlServer.SmoEnum.dll, Microsoft.SqlServer.SqlEnum.dll и т.д.), Я также загрузил пакет функций SS2005 с сайта Microsoft, который включает объекты SMO, но все равно не повезло.

Следующий код работает, если я не раскомментирую строку, которая в настоящее время прокомментирована, и в этом случае я получаю следующую ошибку:

protected void btnArchive_Click(object sender, EventArgs e)
{
    ServerConnection conn = new ServerConnection("my_server");

    conn.LoginSecure = false;
    conn.Login = "my_login";
    conn.Password = "my_password";

    Server s = new Server(conn);
    Database d = s.Databases["my_database"];
    //Table tbl = d.Tables["my_table"];

    Response.Write(s.Name + " " + s.Information.RootDirectory + " " + d.CreateDate.ToShortDateString());
    conn.Disconnect();
}

Ошибка: Не удалось загрузить файл или сборку "Microsoft.SqlServer.BatchParser, Version = 9.0.242.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91" или одну из его зависимостей. Система не может найти указанный файл.

Заметьте, я также пробовал это из SSIS, используя VB.NET, такое же поведение.

Любые мысли будут оценены.

Спасибо.

4b9b3361

Ответ 1

Мне удалось успешно запустить ваш код, используя версии 10. * сборок "Microsoft.SqlServer.ConnectionInfo", "Microsoft.SqlServer.Management.Sdk.Sfc" и "Microsoft.SqlServer.Smo". Попробуйте загрузить 2008 версию SMO-компонентов, возможно, это была ошибка, которую они теперь исправили.

Ответ 2

Вы используете ОС x64 на своем поле? По-видимому, проблемы с BatchParser.dll в 64-разрядных средах - обычно рекомендуется загрузить SMO x64 Package (SQLServer2005_XMO_x64.msi) от Microsoft.

См. информацию об этом здесь.

Ответ 3

Я знаю, что я очень опаздываю на вечеринку здесь, но это все же первый результат, когда вы google "smo batchparser".

При установке SMO 2014 (12.0.x) некоторые библиотеки DLL устанавливаются только в GAC. Чтобы ваше приложение работало без необходимости вручную устанавливать SMO на целевом сервере, вы должны скопировать эти библиотеки DLL с вашим приложением. Вот пути, из которых я их получил.

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.ConnectionInfo.dll

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.Management.Sdk.Sfc.dll

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.Smo.dll

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.SmoExtended.dll

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.SqlEnum.dll

C:\Windows\сборка\GAC_64\Microsoft.SqlServer.BatchParser\12.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.BatchParser.dll

C:\Windows\сборка\GAC_MSIL\Microsoft.SqlServer.BatchParserClient\12.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.BatchParserClient.dll

C:\Windows\сборка\GAC_MSIL\Microsoft.SqlServer.SqlClrProvider\12.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.SqlClrProvider.dll

Чтобы получить доступ к файлам GAC, вам необходимо отключить встроенный просмотрщик окон, используя инструкции в этой статье.

Выдержка из статьи для удобства:

Откройте редактор реестра и добавьте/установите значение HKLM\Software\Microsoft\Fusion\DisableCacheViewer DWORD: 1

Ответ 4

Вам нужно установить следующий пакет для решения проблемы, я решил эту проблему дважды с этим пакетом, надеюсь, что это может сработать и для всех...

Коллекция объектов управления Microsoft SQL Server 2005 В пакет коллекции объектов управления входят несколько ключевых элементов API управления SQL Server 2005, включая объекты управления анализом (AMO), объекты управления репликацией (RMO) и объекты управления SQL Server (SMO), Разработчики и администраторы баз данных могут использовать эти компоненты для программного управления SQL Server 2005.

Вы можете получить из Feature Pack для Microsoft SQL Server 2005 - декабрь 2008 г. с сайта Microsoft

http://www.microsoft.com/en-us/download/details.aspx?id=11988

Но расположение ссылки на странице загрузки изменяется каждый раз, если вы не найдете ресурс, который вы можете загрузить с моего блога тоже.

Я также предоставил некоторые советы и ресурсы об этом в своем блоге, если вы хотите http://rndp-android.blogspot.com/p/missing-microsoftsqlservermanagementsdk.html

Ответ 5

Как раз так, чтобы мы правильно поняли проблему, файл Microsoft.SqlServer.BatchParser.dll не установлен в глобальном кэше сборок на вашей машине разработки? Если это так, вы можете начать с повторной установки .NET Framework (версии Framework, на которую настроен таргетинг), чтобы узнать, устраняет ли это проблему.

Вы также можете попробовать использовать инструмент .NET Framework Configuration, чтобы узнать, действительно ли сборка присутствует в глобальном кэше сборок (GAC). Этот Статья MSDN описывает, как использовать этот инструмент.

(Поиск на моем жестком диске не возвращал сборку Microsoft.SqlServer.BatchParser.dll, хотя я вижу ее с помощью инструмента конфигурации .NET Framework).

Ответ 6

он входит в состав консультанта по обновлению 2005 или 2008 годов.