NodeJS サーバー アプリケーションから MS SQL Server データベースに接続しようとしていますが、localhost/127.0.0.1 を使用してローカル マシンで問題なく動作しているのに、実際のサーバーにプッシュすると認証エラーが発生します。
私が得ているエラーは次のとおりです。
信頼されていないドメインからのログインであり、Windows 認証では使用できません
したがって、おそらく別のドメインだと考えていますが、私のドメインは次のとおりです。
000001.mysubdomain.mydomain.com
ct000002.mysubdomain.mydomain.com
したがって、私はネットワーキングの専門家ではありませんが、この場合、MS SQL Server と NodeJS サーバーの両方が実際には同じドメインにあると思いますが、それは正しいと思いますか?それとも間違っていますか?
いくつかの詳細情報 - どちらの場合も、IP アドレスは同じ最初の番号を共有していますが、残りは異なります - SS.XX.XX.XX - SS は同じ番号で、XX は異なります - これは、それらが実際には異なる番号にあることを示唆していますか?ドメイン?
これに加えて、それがドメインの問題である場合、ローカル マシンで動作するのはなぜですか?
したがって、それがドメインの問題ではないことを排除できる場合、どこに行けばよいかわかりません。これが私のコードです。私は Tedious-NTLM NodeJS モジュールを使用しています - https://www.npmjs.com/package/tedious -ntlm
var tds = require("tedious-ntlm"); //Get the tedious model for NTLM connection to the SQL Server
//Set up config for logging into the DB
var config = {
userName: 'myusername', //Username
domainName: "mydomain", //Domain
password: 'mypassword', //Password
server: '000001.mysubdomain.mydomain.com' //Database address
};
function getDataFromSQLServer(callback){
var connection = new tds.Connection(config); //Configure a connection
//When the database is connected to we get this event
connection.on('connect', function(err) {
// If no error, then good to go...
if(err){
console.log('err = ' + err); //Log the error to the console
}
else{
executeStatement(callback); //Execute the test statement
}
}
);
ここでわかるように、関数が呼び出されるとエラーがログに記録されます。サーバーからコードを実行しようとするとエラーが発生しますが、ローカル マシンから実行しても問題はありません。
エラーに関する詳細情報を取得するには、次のコードを使用します。
connection.on('errorMessage', function(err){
console.log('full error = ' + JSON.stringify(err)); //Log the error to the console
});
これにより、次の情報が得られます。
full error = {"number":18452,"state":1,"class":14,"message":"ログインに失敗しました。信頼されていないドメインからのログインであり、Windows 認証では使用できません。","serverName" :"000001","procName":"","lineNumber":1,"name":"ERROR","event":"errorMessage"}
繰り返しますが、ローカル マシンで実行するとすべて正常に動作しますが、サーバーから実行するとエラーが発生します。これは本当にドメインの問題なのか、それともエラー メッセージが正しくなく、他に何か問題があるのでしょうか?