#c# #sql-server #winforms #crystal-reports
#c# #sql-сервер #winforms #crystal-отчеты
Вопрос:
Я использую crystal report на WinFrom (отчет содержит только 1 таблицу).
У меня есть две машины, на первой все работает нормально (Windows 10). но на второй (Windows 7) я, похоже, не могу войти в БД.
Я скопировал весь проект, как есть, с рабочего компьютера на компьютер с проблемой, но проблема сохраняется. нет сообщения об ошибке, нет исключения, просто какое-то общее «Ошибка входа в систему, попробуйте еще раз»
Насколько я исследовал, единственное различие между машинами — это сама DB (Microsoft SQL server), рядом с именем DB кажется, что на рабочей машине свойство IntegratedSecurity
не требуется (работает с этим свойством или без него).). Но на компьютере с проблемой это свойство, похоже, требуется, но даже когда я устанавливаю IntegratedSecurity = true
, проблема остается.
public static void printReport(string id)
{
using (var frmPrint = new FrmPrint(id))
{
SetTableConnectionInfo(frmPrint);
frmPrint.palletLablePaving.SetParameterValue(0, id);
#if DEBUG
frmPrint.crystalReportViewer1.ReportSource = frmPrint.palletLablePaving;
frmPrint.ShowDialog();
#else
frmPrint.palletLablePaving.PrintToPrinter(nCopies: 1, collated: false, startPageN: 0, endPageN: 0);
#endif
}
}
private static void SetTableConnectionInfo(FrmPrint frmPrint)
{
foreach (Table table in frmPrint.palletLablePaving.Database.Tables)
{
// Get the ConnectionInfo Object.
var logOnInfo = table.LogOnInfo;
var connectionInfo = logOnInfo.ConnectionInfo;
// Set the Connection parameters.
connectionInfo.DatabaseName = "APP5D";
connectionInfo.ServerName = @".YP_LINE5_DRY";
connectionInfo.UserID = "admin";
connectionInfo.Password = "myPssword";
connectionInfo.IntegratedSecurity = true; // not affecting the result
table.ApplyLogOnInfo(logOnInfo);
}
}
P.S
Я не могу ничего изменить в отчете или в свойствах DB
Отредактируйте рабочую машину, используя SQL Server версии 11 (2012) и машину с проблемой, используя версию 12 (2014)
Комментарии:
1. что за сообщение об ошибке?
2. @reckface нет сообщения об ошибке, нет исключения, просто какое-то общее «Ошибка входа в систему, попробуйте еще раз»
3. ConnectionInfo. IntegratedSecurity = true использует учетные данные Windows, поэтому у вас не может быть имени пользователя и пароля. Для работы учетных данных Windows должно произойти следующее: 1) База данных настроена на учетные данные Windows 2) На локальном компьютере и сервере есть одна и та же учетная запись группы (или сеть использует групповые политики) 3) Пользователь находится в группе на локальном и удаленном ПК. Я бы рекомендовал начать с SQL Server Management Studio и посмотреть, сможете ли вы получить доступ к базе данных. Имя и экземпляр сервера Windows для входа должны совпадать с именем приложения. В окнах входа в систему должны отображаться учетные данные Windows.
4. @styx хорошо, какая версия собственного клиента SQL на каждом компьютере? jdweng прав, не используйте как IntegratedSecurity, так и учетные данные в Crystal, это не работает, хотя это не ваша непосредственная проблема
5. Если учетная запись настроена правильно, вы сможете использовать SQL Server Management Studio для доступа к базе данных с локального / удаленного ПК, что я бы попробовал в первую очередь. Если это работает, то нет причин, по которым ваш код не должен работать, при условии, что вы удалите имя пользователя и пароль из строки подключения, а Имя_серВера Экземпляр (.YP_LINE5_DRY) соответствует окну входа в SSMS.