Подключение к базе данных SQL Server с использованием Visual C ++ - PullRequest
0 голосов
/ 25 февраля 2012

Я пытаюсь подключиться к образцу базы данных Northwind в SQL Server 2005 Express через Visual C ++ 2008, используя следующий код:

SqlConnection^ con=gcnew SqlConnection();
con->ConnectionString="Data Source=localhost\\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=SSPI";

SqlCommand^ com=gcnew SqlCommand();
com->Connection=con;
com->CommandText="Select * From Customers";

try
{
    con->Open();

    SqlDataReader^ myReader;
    myReader=com->ExecuteReader();
    myReader->Read();

    Console::WriteLine(myReader->GetData(5));

    myReader->Close();
}
catch(Exception^ e)
{
    Console::WriteLine(e->Message);
}
finally
{
    con->Close();
}

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

Ошибка входа в базу данных для пользователя PC-ANKIT

И после этого я понятия не имею, что происходит, но таблицы в базе данных волшебным образом исчезают.Список баз данных в SQL Server Management Studio по-прежнему показывает базу данных Northwind, но она не содержит таблиц, представлений или чего-либо еще.

Кроме того, когда я пытаюсь сделать то же самое, используя эквивалентный код в VB вVisual Web Developer 2008, экспресс-выпуск - никаких проблем не возникает!Я могу подключиться к базе данных и получить доступ к данным во всех таблицах.

Может кто-нибудь помочь мне решить эту проблему?Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 25 февраля 2012

Строка подключения ConnectionString="Data Source=localhost\\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=SSPI"; указывает на то, что вы пытаетесь получить к нему доступ с помощью «интегрированной защиты», которая использует текущего пользователя Windows, вошедшего в систему, для аутентификации в базе данных.Возможно, такие учетные данные еще не существуют для вашей базы данных.Вы можете предоставить явные учетные данные, используя этот синтаксис:

Data Source=ServerName; Initial Catalog=DatabaseName; User Id=UserName; Password=UserPassword;
2 голосов
/ 25 февраля 2012

Попробуйте подключиться к базе данных, используя проводник сервера Visual Studio. Если вы успешно подключились, вы можете щелкнуть правой кнопкой мыши по соединению и проверить свойства. Там вы найдете строку подключения - используйте ее в своем приложении и проверьте, работает ли она.

Обратите внимание, что это доверенное соединение, если вы хотите использовать имя пользователя и пароль, которые я использую:

Сервер = myServerAddress; База данных = myDataBase; Идентификатор пользователя = myUsername; Пароль = myPassword; Интегрированная защита = SSPI;

Надеюсь, это поможет!

1 голос
/ 25 февраля 2012

Вы должны убедиться, что пользователь PC-ANKIT является по крайней мере db_datareader в выбранной вами базе данных (а не только для входа на SQL-сервере). Вы можете сделать это в SQL Management [your database] -> Security -> Users. Ваш пользователь (или группа, к которой он принадлежит) должен быть указан под этим узлом. Для этого пользователя (или группы) Properties -> General -> Database Role Membership убедитесь, что выбран db_datareader (или db_owner).

Если у вас все еще есть проблемы, попробуйте использовать аутентификацию пользователя и пароля. Не забудьте включить смешанный режим безопасности в SQL Server -> Properties -> Security -> SQL Server and Windows Authentication Mode. В этом случае вам необходимо изменить строку подключения, заменив Integrated Security=SSPI; на User ID=your_user;Password=pass;

Убедитесь, что вы используете точно такую ​​же строку подключения в версии VB, чтобы исключить любые различия между этими двумя сценариями.

...