Перейти к содержимому

Фотография

Работа с БД MS SQL Server 2008 R2


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 riverhead

riverhead

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 30 сентября 2011 - 11:35

Ребят, подскажите пожалуйста. Сейчас пытаюсь разобраться с возможностью использования БД в TestComplete.
Для начала хочу реализовать это:
Создать в SQL Server Management Studio таблицу с данными и написать функцию, которая подключается к файлу базы данных, выбирает данные из таблицы и выводит результат в лог TestComplete-а

ps: Подключение через ADO DB (как я понимаю, это самый простой способ работы с базами данных)
Таблица: dbo.Friends (кстати, нужно ли схему указывать в обращении?)
БД: MyDataBase
Server name: .\SQLEXPRESS
Connection (User name): UNIVERSE\vpupkin
pswd не ставил

Основная загвоздка в написаниии connection_string (Data Source, Initial Catalog, User Id, Password)
Пробовал различные варианты заполнения этих параметров, но безуспешно). Короч, если есть какие-то соображения по этому поводу - буду оч. признателен.

ну и вот собственно функция:
function TestADODB()
{
// подключаемся к базе
var mydb = Sys.OleObject("ADODB.Connection");
mydb.ConnectionString = "Data Source = myServerAddress; Initial Catalog = myDataBase; User Id = myUsername; Password = myPassword"; //ну эт соответственно шаблон

mydb.Open();

// выбираем данные
var rs = mydb.Execute("SELECT * FROM dbo.Friends");
rs.MoveFirst();

while(!rs.EOF)
{
Log.Message(rs.Fields("fname").Value);
rs.MoveNext();
}

// закрываем подключения
rs.Close();
mydb.Close();
}
  • 0

#2 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 30 сентября 2011 - 19:53

Во-первых, в connection string нужно указать провайдера. В вашем случае это SQLOLEDB.
Во-вторых, вы пишите:

Connection (User name): UNIVERSE\vpupkin
pswd не ставил

Кто такой этот впупкин? Это доменный юзер или он существует только на SQL сервере? Если доменный, то как вам удалось создать пользователя без пароля, если же SQL пользователь, то что такое UNIVERSE?
В-третьих, убедитесь, что у вашего пользователя есть доступ к нужной базе. Для этого просто залогиньтесь под ним через ту же студию.
В-четвертых, если впупкин таки SQL пользователь, то проверьте, что у вас на сервере включена SQL Server Authentication (по умолчанию она выключена).
В-последних, если впупкин таки доменный пользователь, то указание логинов с паролями вам ничем не поможет. Для того, чтобы коннектиться через WIA в connection string нужно указать Integrated Security=SSPI без логинов и паролей, тогда ТС будет ломиться в базу под тем пользователем под которым он запущен.
  • 0

#3 riverhead

riverhead

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 03 октября 2011 - 05:43

Объясню поэтапно. Поставил тесткомплит, поставил MS SQL Server 2008 R2. Создал в SQL Server Managment Studio таблицу. Внизу картинку приложил коннекта. UNIVERSE\vpupkin - логин на входе в систему.
Как я понимаю - конекшн стринг будет след. вида:
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

что указывать в параметрах myServerAddress и myDataBase?

Прикрепленный файл  Untitled.png   62,53К   19 Количество загрузок:
  • 0

#4 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 03 октября 2011 - 05:59

В myServerAddress указываете <имя хоста>\<инстанс SQL сервера>. Имя хоста может быть именем машины на которой установлен сервер, localhost, точкой (что то же самое, что и localhost). В Initial Catalog указываете имя базы данных с которой будете работать. Желательно также указать провайдера Provider = SQLOLEDB.
Т.е. для вашего случая должно быть
Provider=SQLOLEDB;Data Source=.\SQLEXPRESS;Initial Catalog=myDataBaseName;Integrated Security=SSPI;

  • 0

#5 riverhead

riverhead

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 03 октября 2011 - 06:13

Прописал конекшн скрипт, упало с ошибкой: [DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.

Я думаю, может в этом причина:

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


Как залогиниться через студию?
  • 0

#6 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 03 октября 2011 - 06:21


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


Как залогиниться через студию?

Под "через ту же студию" имелась ввиду SQL Management Studio. :)
Я надеюсь, что TC и SQL сервер на одной машине стоят, и вы запускаете TC под пользователем впупкин?
  • 0

#7 riverhead

riverhead

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 03 октября 2011 - 06:38

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

Еще раз код приведу (может я в чем-то косячу):
function TestADODB()
{
// подключаемся к базе
var mydb = Sys.OleObject("ADODB.Connection");
mydb.ConnectionString = "Provider=SQLOLEDB;Data Source=.\SQLEXPRESS;Initial Catalog=MyDataBase;Integrated Security=SSPI";

mydb.Open();

// выбираем данные
var rs = mydb.Execute("SELECT * FROM dbo.Friends");
rs.MoveFirst();

while(!rs.EOF)
{
Log.Message(rs.Fields("fname").Value);
rs.MoveNext();
}

// закрываем подключения
rs.Close();
mydb.Close();
}
  • 0

#8 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 03 октября 2011 - 07:17

Извиняюсь, я что-то невнимателен сегодня. Надо так:
mydb.ConnectionString = "Provider=SQLOLEDB;Data Source=.\\SQLEXPRESS;Initial Catalog=MyDataBase;Integrated Security=SSPI;";
Не забывайте слеши экранировать :).
  • 0

#9 riverhead

riverhead

    Новый участник

  • Members
  • Pip
  • 8 сообщений

Отправлено 03 октября 2011 - 07:39

Точно, забыл) спасибо Вам большое за помощь. все получилось! буду дальше разбираться.
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных