Не удается подключиться к SQL Server из моего расширения кода VS (node.js) - PullRequest
6 голосов
/ 05 мая 2019

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

        const Connection = require('tedious').Connection;

        const config = {
            user: 'ssrs', // tried userName, username
            password: 'ssrs', 
            server: 'localhost',
            options: {
                database: 'imdb' 
            }
          }

          const connection = new Connection(config);
          connection.on('connect', function(err: string) {
            if (err) {
              console.log(err);
            } else {
              console.log('Connected');
            }
          });

ИЛИ

        await sql.connect('mssql://ssrs:ssrs@localhost/imdb')
        const result = await sql.query`select 1 as one`
        console.dir(result)

ИЛИ

    const sql = require("mssql");
    const conn = new sql.ConnectionPool({
        database: "imdb",
        server: "localhost",
        driver: "msnodesqlv8",
        userName: "ssrs",
        password: "ssrs"
    });

    conn.connect().then(() => {
        console.log('Connected');
    });

ConnectionError:Ошибка входа пользователя ''.

enter image description here

Подключение через sqlcmd:

enter image description here

Порт также открыт (1433), так как я могу telnet к нему.

Сообщения из журнала SQL Server:

Дата 2019-05-0811:19:02 Журнал SQL Server (текущий - 2019-05-05 14:53:00)

Исходный вход

Сообщение Ошибка входа пользователя ''.Причина: попытка входа с использованием проверки подлинности SQL не удалась.Сервер настроен только для встроенной аутентификации.[КЛИЕНТ: 127.0.0.1]

Дата 2019-05-08 11:19:02 Журнал SQL Server (текущий - 2019-05-05 14:53:00)

ИсточникВход в систему

Сообщение об ошибке: 18456, серьезность: 14, состояние: 58.

Попытка соединения с Powershell:

  PS C:\WINDOWS\system32> Invoke-Sqlcmd -query "select CURRENT_USER, USER_NAME()" -ServerInstance "localhost" -username "ssrs" -password "ssrs" -Database 'imdb'

Column1 Column2
------- -------
ssrs    ssrs   

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Как показано на скриншоте, вы можете подключиться через утилиту SQLCMD.Это означает, что нет проблем с пользователем или режимом аутентификации в SQL Server.Однако сообщение об ошибке вводит в заблуждение , и другие пользователи уже сталкивались с этим здесь .

Я не эксперт по node.js, но я бы порекомендовал вам лучше понятькак работает плагин mssql и объект Connection.Я думаю, что некоторые пропущенные настройки в вашей конфигурации приводят к неудачной попытке подключения.

Например, указанный вами код неверен ( userName недопустим):

const sql = require("mssql");
const conn = new sql.ConnectionPool({
    database: "imdb",
    server: "localhost",
    driver: "msnodesqlv8",
    userName: "ssrs",
    password: "ssrs"
});

conn.connect().then(() => {
    console.log('Connected');
});

Это должно быть:

const sql = require("mssql");
const conn = new sql.ConnectionPool({
    database: "imdb",
    server: "localhost",
    driver: "msnodesqlv8",
    user: "ssrs",
    password: "ssrs"
});

conn.connect().then(() => {
    console.log('Connected');
});
1 голос
/ 08 мая 2019

Причина, по которой вы не можете подключиться, записана в журнале:

Причина: попытка входа с использованием проверки подлинности SQL завершилась неудачно.Сервер настроен только для встроенной аутентификации.

Вам необходимо изменить режим аутентификации (что вы уже сделали в соответствии с опубликованным скриншотом) и перезапустите службу SQL Server с агентом.Вы перезапустили сервис после смены режима?

...