8.х Ошибка подключения к MSSQL серверу

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Sergey-911, 15 авг 2010.

  1. TopicStarter Overlay
    Sergey-911
    Offline

    Sergey-911

    Регистрация:
    1 авг 2007
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Доброе время суток увжаемые.
    Версия платформы - 8.1. Конфигурация - своя. В ней есть справочник. Нужно, чтобы при редактировании справочника существовала возможность заполнять данные из БД SQL сервера. Для этого на форме сделал кнопку "Подключиться к серверу", чтобы затем выполнить запрос и заполнить необходимые поля. Код подключения следующий:
    Код:
    Попытка
    ИмяПользователя = "user"; 
    Пароль = "pass"; 
    ИмяСервера = "sqlserver"; 
    ИмяБазы = "base"; 
    
    стрПодключения = "Driver={SQL Server};"
    стрПодключения = стрПодключения + ИмяСервера + ";";
    стрПодключения = стрПодключения + "Uid =" + ИмяПользователя + ";";
    стрПодключения = стрПодключения + "Pwd =" + Пароль + ";";
    стрПодключения = стрПодключения + "DataBase =" + ИмяБазы + ";";
    стрПодключения = стрПодключения + "Pwd =" + Пароль + ";";
    
    Connection = Новый COMОбъект("ADODB.Connection"); 
    Connection.OpenServer = стрПодключения;
    Исключение
    стрПодключения = "";
    Предупреждение("Ошибка подключения к SQL.");
    КонецПопытки;
    
    
    При нажатии на кнопку "Подключиться к серверу" - подключения не происходит, вылетает сообщение об ошибке.
    Авторизоваться в Анализаторе запросов мне получается, следовательно ошибка не в данных пользователя. Версия MS SQL - 2005.
    Сервер 1С у меня не установлен. В литературе для самостоятельного подключения к SQL про него ни слова не сказано.
    Подскажите, уважаемые форумчане, в чем может быть ошибка? :unsure:
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    В блоке "Исключение" напишите:
    Код:
    Сообщить(ОписаниеОшибки());
    
    что выдает?
  3. TopicStarter Overlay
    Sergey-911
    Offline

    Sergey-911

    Регистрация:
    1 авг 2007
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Сейчас не могу ответить, нет MSSQL сервера под рукой, отвечу завтра.

    Для произвольного подключения к SQL нужно ли устанавливать сервер 1С предприятия, или он нужен только в случае размещения на SQL основной БД?
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    если в SQL включена виндовая аутентификация, то имя пользователя и пароль не нужны.
  5. TopicStarter Overlay
    Sergey-911
    Offline

    Sergey-911

    Регистрация:
    1 авг 2007
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    На серваке - смешанная аутентификация (винды и SQL). Мне можно подключаться с аутентификацией SQL сервера, права - только чтение.
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    команда на соединение с ADODB всю жизнь была:

    Connection.Open(стрПодключения);
  7. TopicStarter Overlay
    Sergey-911
    Offline

    Sergey-911

    Регистрация:
    1 авг 2007
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Выдает

    {Справочник.Классификатор.Форма.ФормаСписка(47)}: Ошибка при установке значения атрибута контекста (OpenServer): Нет поименованных аргументов


    Строка подключения выглядит в виде
    Код:
    Driver={SQL Server};sqlserver;Uid=user;Pwd=pass;DataBase=base;Pwd=pass;
    
    
    Может в ней ошибка?
  8. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    У меня строка подключения
    Код:
     
    Provider     = SQLOLEDB;Data Source = ServerName;Initial Catalog = Base;User ID = User;Password = psw
    
    
    
    А вобще смутно что за второй параметр, точнее там даже параметра нет, написано просто "sqlserver". Попробуйте так
    Код:
    Driver={SQL Server};Uid=user;Pwd=pass;DataBase=base;Pwd=pass;
    
    
  9. TopicStarter Overlay
    Sergey-911
    Offline

    Sergey-911

    Регистрация:
    1 авг 2007
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    Спасибо has, работает. На всякий случай, вдруг кому понадобится:
    Код:
    стрПодключения = "Provider = SQLOLEDB; ";
    стрПодключения = стрПодключения + "Data Source = " + ИмяСервера + "; ";
    стрПодключения = стрПодключения + "Initial Catalog = " + ИмяБазы + "; ";	
    стрПодключения = стрПодключения + "User ID = " + ИмяПользователя + "; ";
    стрПодключения = стрПодключения + "Password = " + Пароль + "; ";
    
    Connection = Новый COMОбъект("ADODB.Connection"); 
    Connection.Open(стрПодключения);
    
    
    :unsure:
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
  11. TopicStarter Overlay
    Sergey-911
    Offline

    Sergey-911

    Регистрация:
    1 авг 2007
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    nomad_irk, почему "чукча - писатель"? Что не так? Обаснуй. Вроде бы была проблема, с помощью форума удалось решить - значит вопрос был задан правильно.
    :unsure:
  12. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    я 6-ю постами выше сказал, что команда на подключение к ADODB -

    Connection.Open(стрПодключения)

    мой пост был проигнорирован....
  13. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    У него еще сама строка соединения была неверная, получается 2 ошибки было
  14. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    не уверен, т.к. я использую строку соединения

    "driver={SQL Server}; server=" + СокрЛП(Сервер)+ "; Database=" + СокрЛП(БазаИсточник);

    и все прекрасно соединяется.

    т.е. я склонен считать, что "driver={SQL Server}" == "Provider = SQLOLEDB"
  15. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Ошибка в строке была, т.к. у него было написано "sqlserver" лишним, судя по 7-ому посту
  16. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    согласен 2.

    однако, судя по тому же 7-му посту, подключался с помощью

    Connection.OpenServer = стрПодключения;
  17. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    тоже согласен :)
  18. TopicStarter Overlay
    Sergey-911
    Offline

    Sergey-911

    Регистрация:
    1 авг 2007
    Сообщения:
    36
    Симпатии:
    0
    Баллы:
    1
    nomad_irk, твой пост не был проигнорирован. Прежде чем дальше задавать вопросы, я убедился, что дело в строке подключения.
    Видимо в книге
    1С:Предприятие 8. Простые примеры разработки.
    строка подключения указана неправильно.

Поделиться этой страницей