2015-10-30 3 views
-3

Одна из моих услуг на сервере Windows читает из файла xml имя пользователя и пароли строят запрос и соединяются с базой данных. Служба работала нормально до тех пор, пока ИТ не отключился от местных административных пользователей. Я продолжаю получать сообщениеОшибка входа в базу данных для локальных администраторов

Ошибка входа в базу данных.

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

private void OnElapsedTime(object source, ElapsedEventArgs e) 
     { 
      GetServerInfo() 


       ConnectionInfo ci = new ConnectionInfo(); 
       ci.ConnStringOuter = "Data Source=" + ServerName + ";Initial Catalog=" + Database + ";Persist Security Info=True;User ID=" + AdminUser + ";Password=" + AdminPass + ";Application Name= Reports.Net Service;Connect Timeout=90"; 

       SqlConnection cnAccounts = new SqlConnection(ci.ConnStringOuter); 
       string qryAccounts = "SELECT a.id, a.LastRunStatus, a.TimeOffSet FROM events a WITH (NOLOCK) JOIN Data d ON a.DbID = d.DbID WHERE a.isOn = 1 AND (a.EventDesc LIKE '%AR%') AND mygroup='Notification' AND d.AppName='RoomNet' "; 
       cnAccounts.Open(); 
       SqlCommand cmdAccounts = new SqlCommand(qryAccounts, cnAccounts); 
       SqlDataReader rdrAccounts = cmdAccounts.ExecuteReader(); 
    } 



private void GetServerInfo() 
     { 
      XmlDocument xDoc = new XmlDocument(); 
      try 
      { 

       string AppPath = Directory.GetParent(System.Reflection.Assembly.GetEntryAssembly().Location).FullName; 
       StreamReader rdr = new StreamReader(StrAppPath + "\\XMLServer.xml"); 
       xDoc.Load(rdr); 
       rdr.Close(); 
       rdr.Dispose(); 

       XmlNodeList xRequest = xDoc.GetElementsByTagName("XMLServer"); 
       foreach (XmlNode node in xRequest) 
       { 
        ServerName = xDoc.GetElementsByTagName("ServerName")[0].InnerText; 
        AdminUser = xDoc.GetElementsByTagName("AdminUser")[0].InnerText; 
        AdminPass = xDoc.GetElementsByTagName("AdminPass")[0].InnerText; 
        Database = xDoc.GetElementsByTagName("Database")[0].InnerText; 
        OutgoingPort = Convert.ToInt32(xDoc.GetElementsByTagName("EmailPort")[0].InnerText); 
        SMTPFromAddress = xDoc.GetElementsByTagName("SMTPFromAddress")[0].InnerText; 
        SMTPUserID = xDoc.GetElementsByTagName("SMTPUserID")[0].InnerText; 
        SMTPPassword = xDoc.GetElementsByTagName("SMTPPassword")[0].InnerText; 
        SMTPServer = xDoc.GetElementsByTagName("SMTPServer")[0].InnerText; 
       } 
      } 
      catch (Exception err) 
      { 
       ConnectionInfo ci = new ConnectionInfo(); 
       WriteEventToWindowsLog("Log", " failed. Message: " + err.Message); 

      } 

      xDoc = null; 
     } 

В файле xml есть имя пользователя и пароль iis-admin.

+0

Как вы его исправить? Не входите в вашу программу в качестве локального административного пользователя. Вам нужно обновить свой вопрос, показывая, как вы делаете свои строки подключения (чтение из xml и заполнение имени пользователя и пароля) для нас, чтобы помочь вам в дальнейшем. –

+0

У вас есть «DBA», у вас есть учетная запись службы для этого пользователя Sql, которая будет использовать только эту службу. Просто, как это – MethodMan

+1

Я думаю, что вы используете учетные данные Windows. SQL Server может использовать либо учетные данные Windows, либо учетные данные SQL. Для использования учетных данных Windows необходимо изменить базу данных. Затем создайте учетную запись группы окон для базы данных и добавьте всех пользователей в групповую учетную запись. – jdweng

ответ

0

Перезагрузите сервер, решив все проблемы. Спасибо всем за ваши ответы. Я узнал много вещей из каждого ответа.

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