Crystal Report — не удается войти в DB c#

#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.