2010-06-21 3 views
3

Я использую этот код SMO для присоединения базы данных.Прикрепить базу данных с помощью SMO keep Failing

 Server mServer = new Server("."); 

     mServer.AttachDatabase("DbName", new StringCollection { 
      "DbName.mdf", 
      "DbName_log.LDF" }, AttachOptions.None); 

Но я получаю исключение

Failed to connect to server.

Любые идеи?

[Изменено]

Внутренняя Исключение:

{ "Произошла ошибка сети связанных или экземпляра конкретных при установлении соединения с SQL Server Сервер не найден или не был доступен Убедитесь, что.. имя экземпляра верное и что SQL Server настроен на разрешение удаленных подключений (поставщик: поставщик именованных труб, ошибка: 40 - не удалось открыть соединение с SQL Server) »}

ответ

2

Ошибка говорит все - SMO не может подключитесь к серверу.

  • Этот локальный сервер существует?
  • У вас есть право на доступ к этому серверу?
  • Возможно, вы используете именованный экземпляр (например, «. \ SQLExpress»)?

Больше очков:

  • вы не указали полный путь к файлу/LDF MDF - попробуйте указать полный путь с каталогом и все. Разве это имеет значение?

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

  • Работает ли ваша служба SQL Server?

Ваше обновление указывает, что SMO пытается использовать «именованные каналы» для связи с вашим сервером. Включен ли этот протокол на стороне сервера? Проверьте диспетчер конфигурации SQL Server (в меню Пуск, SQL Server> Конфигурация Инструменты> Диспетчер конфигурации SQL Server):

alt text http://i49.tinypic.com/xatfmv.png

Если клиент пытается подключиться с помощью именованных каналов, вам необходимо убедиться, что они» снова включен на стороне сервера (по умолчанию они не отображаются, как вы можете видеть из моего снимка экрана).

+0

Локальный сервер существует, я могу прикрепить файл вручную ... Права, я администратор компьютера. Я просто использую "." string в конструкторе сервера. –

+0

Я использовал полный путь с статическим методом Path.GetFullPath, также проверил его.\ bin \ Debug \ data \ DbName.mdf и т. д. –

+0

Да, это ... если я присоединяю базу данных вручную, моя программа запускается правильно ... когда моя программа не может подключиться к серверу, у меня есть настройка формы connect string check connection и прикрепить базу данных ... но продолжает терпеть неудачу. –

0

У меня была аналогичная проблема. Не удалось подключить файлы базы данных через smo. Но если я скопирую файлы mdf и ldf из папок отладки или выпуска Visual Studio, чтобы сказать корневой каталог (C :), они там будут программно хорошо отлажены. В дополнение к отсутствию доступа к серверу, вы можете попробовать переместить файлы db в другое место. Надеюсь, что поможет

Смежные вопросы