1

У меня запущено довольно простое приложение js для js, которое отслеживает удары пользователей на данном веб-сайте. Разрабатываемая версия работает просто отлично писать на SQL 2012 Enterprise Server, но серийная версия получает следующее сообщение об ошибке:Узел JS mssql/mssqlnodev8 Разрешение INSERT отклонено, когда пользователь является DBOwner

error running query { RequestError: The INSERT permission was denied on the object 'StudentMonitor', database 'LearnOnlineStatus', schema 'dbo'. 
    at StreamEvents.<anonymous> (C:\Node\MoodleMonitor\node_modules\mssql\lib\msnodesqlv8.js:624:21) 
    at StreamEvents.g (events.js:286:16) 
    at emitOne (events.js:96:13) 
    at StreamEvents.emit (events.js:188:7) 
    at routeStatementError (C:\Node\MoodleMonitor\node_modules\msnodesqlv8\lib\driverMgr.js:119:20) 
    at onInvoke (C:\Node\MoodleMonitor\node_modules\msnodesqlv8\lib\driverMgr.js:476:17) 
    at onQuery (C:\Node\MoodleMonitor\node_modules\msnodesqlv8\lib\driverMgr.js:157:17) name: 'RequestError', message: 'The INSERT permission was denied on the object \'StudentMonitor\', database \'LearnOnlineStatus\', schema \' dbo\'.', code: 'EREQUEST', number: 229, lineNumber: undefined, state: '42000', class: undefined, serverName: undefined, procName: undefined } 

Он пытается выполнить следующий код ВСТАВИТЬ:

mssql.getConnection(function(err, client, done) { 
    for (var i = 0; i < 7; i++) { 
     client.input('' + (i+1), data[i]); 
    } 

    client.query('INSERT INTO [dbo].[StudentMonitor] (time_created, user_id, ip, url, duration, page_title, course_id) VALUES (@1, @2, @3, @4, @5, @6, @7)', function(err, result) { 
     if(err) { 
     console.error('error running query', err); 
     } 
     // return the client to the connection pool for other requests to reuse 
     done(); 

     return typeof callback === 'function' ? callback(err, result) : result; 
    }); 
    }); 

Все мандатную перечисленные в конфигурациях, являются правильными, и мы устранили проблемы сети как симптом. Попытка выполнить инструкцию insert через SQL Manager отлично работает с этими учетными данными.

Что меня заводит, так это то, что выбор работает очень хорошо, а пользовательская учетная запись, которую мы используем, - это DBOwner, поэтому проблем не должно быть. Проверка таблицы в SQL не показывает никаких странных разрешений или триггеров, это просто обычная старая таблица.

В настоящее время работает на двух серверах Windows 2012 (64-разрядный) R2, но поведение на обоих одинаково. SQL Native Client 11.0 установлен, и я добавил и удалил ODBC-клиенты без каких-либо воздействий. Учетные данные устанавливаются через файл mssql.conf, который корректен и подтвержден из журналов консоли. Есть идеи?

ответ

0

Хорошо, использовал trustedConnection: true с материалом mssql (lib/mssql.js), поэтому он использовал мои учетные данные, а не предоставленные. Переключение этого параметра на false и добавление пользователя и пароля решило проблему.

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

  • Нет связанных вопросов^_^