2016-06-17 1 views
0

Я пытаюсь настроить систему для сотрудников, которые будут использоваться в офисе, чтобы они могли запускать определенные программы с веб-сайта.Ошибка при попытке подключения к SQL Server из программы на удаленном компьютере

Они смогут войти в систему и перейти на страницу отчетов, нажав кнопку, чтобы запустить программу отчетов на сервере утилиты. Программа подключится к SQL Server, чтобы получить регистрационную информацию, а затем зайти на другой сайт и программно создать отчеты и загрузить их.

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

Применение: Тенденции Reports.exe
Framework версии: v4.0.30319
Описание: Процесс был прекращен из-за необработанное исключение.
Exception Информация: System.Data.SqlClient.SqlException

Stack: на System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal (System.Data.Common.DbConnection, System.Data.ProviderBase.DbConnectionFactory, System.Threading. Tasks.TaskCompletionSource 1<System.Data.ProviderBase.DbConnectionInternal>, System.Data.Common.DbConnectionOptions) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(System.Data.Common.DbConnection, System.Data.ProviderBase.DbConnectionFactory, System.Threading.Tasks.TaskCompletionSource 1, System.Data.Common.DbConnectionOptions) на System.Data.SqlClient.SqlConnection.TryOpenInner (System.Threading.Tasks.TaskCompletionSource 1<System.Data.ProviderBase.DbConnectionInternal>) at System.Data.SqlClient.SqlConnection.TryOpen(System.Threading.Tasks.TaskCompletionSource 1) в System.Data.SqlClient.SqlConnection.Open() в Trending_Reports.Program.Main (System.String [])

Вот код, который я использую для запуска программы.

var processToRun = new[] { @"D:\test\Trending Reports.exe" }; 

var connection = new ConnectionOptions(); 
connection.Impersonation = System.Management.ImpersonationLevel.Impersonate; 
connection.Username = "Username"; 
connection.Password = "password"; 

var wmiScope = new ManagementScope(String.Format("\\\\{0}\\root\\cimv2", "Server"), connection); 
wmiScope.Connect(); 

var wmiProcess = new ManagementClass(wmiScope, new ManagementPath("Win32_Process"), new ObjectGetOptions()); 
wmiProcess.InvokeMethod("Create", processToRun); 

Сама программа использует многопоточность. Может ли это вызвать проблему? Или это может быть проблема пользователя, когда он не использует мой профиль пользователя на удаленном компьютере?

ответ

0

Вы настроили сервер SQL для приема удаленных подключений? Это общая причина ошибок.

Вы можете выполнить следующие действия:

  • Разрешить удаленные подключения на экземпляре SQL Server, который вы хотите подключиться к с удаленного компьютера.
  • Настройка SQL-сервера для прослушивания на статическом порту
  • Включите службу браузера SQL Server.
  • Настройте брандмауэр, чтобы разрешить сетевой трафик, связанный с SQL Server и службой браузера SQL Server.

This ссылка здесь есть пошаговое руководство с картинками (Microsoft SQL Server 2012 Express).

+0

Да, я сделал это, и большая часть из них была уже настроена, но я все равно получаю ту же ошибку. – Marcus

Смежные вопросы