SQL Server SMO жалуется на отсутствие DLL
Хорошо, я просмотрел сеть, 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.* сборок "Microsoft.SqlServer.ConnectionInfo", "Microsoft.SqlServer.Management.Sdk.Sfc" и "Microsoft.SqlServer.Smo". Попробуйте загрузить версию SMO-компонентов 2008 года, возможно, это была ошибка, которую они сейчас исправили.
На вашем компьютере установлена ОС x64? Как представляется, проблемы с BatchParser.dll в 64-разрядных средах - обычно рекомендуется загрузить пакет SMO x64 (SQLServer2005_XMO_x64.msi) от Microsoft.
Смотрите информацию об этом здесь.
Я знаю, что я очень опоздал на вечеринку здесь, но это все еще первый результат, когда вы гуглите "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
Вам нужно установить следующий пакет, чтобы решить проблему, я решил эту проблему дважды с этим пакетом, надеюсь, он может работать для всех тоже...
Коллекция объектов управления Microsoft SQL Server 2005 Пакет объектов управления Microsoft включает в себя несколько ключевых элементов 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
Он входит в состав советника по обновлению 2005 или 2008 годов.
Чтобы мы правильно поняли проблему, Microsoft.SqlServer.BatchParser.dll не установлен в глобальном кэше сборок на компьютере разработчика? Если это так, вы можете начать с переустановки.NET Framework (версии платформы, на которую вы нацелены), чтобы посмотреть, решит ли это проблему.
Вы также можете попробовать использовать инструмент настройки.NET Framework, чтобы увидеть, присутствует ли сборка в глобальном кэше сборок (GAC). Эта статья MSDN описывает, как использовать этот инструмент.
(При поиске на моем жестком диске сборка Microsoft.SqlServer.BatchParser.dll не возвращалась, хотя ее можно увидеть с помощью инструмента настройки.NET Framework).