SQL Server SMO жалуется на отсутствие DLL - PullRequest
13 голосов
/ 11 февраля 2009

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

У нас есть около дюжины SQL-серверов (около 2 тыс., 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, версия = 9.0.242.0, культура = нейтральная, PublicKeyToken = 89845dcd8080cc91» или одна из ее зависимостей. Система не может найти указанный файл.

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

Любые мысли приветствуются.

Спасибо.

Ответы [ 6 ]

10 голосов
/ 15 февраля 2009

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

6 голосов
/ 12 февраля 2009

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

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

4 голосов
/ 15 апреля 2015

Я знаю, что очень опаздываю на вечеринку, но это все же первый результат, когда вы гуглите "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 вам необходимо отключить встроенную программу просмотра Windows, используя инструкции, предоставленные этой статьей .

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

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

3 голосов
/ 21 декабря 2012

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

Коллекция объектов управления 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

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

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

0 голосов
/ 11 февраля 2009

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

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

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

...