Microsoft Azuren SQL tietokantaan yhdistäminen.

Viestiketju alueella 'Ohjelmointi, pelikehitys ja muu sovelluskehitys' , aloittaja Jean_Sipulius, 12.06.2018.

  1. Jean_Sipulius

    Jean_Sipulius

    Viestejä:
    257
    Rekisteröitynyt:
    17.10.2016
    Moikka. Projektissa olisi aika siirtyä käyttämään jotain muuta kuin omaa serveriviritystä ja Azure tuntuu parhaimmalta ratkaisulta. Kävin tekemässä ilmaisen kokeilutilin ja sinne loin tietokannan. Ongelmana ollut tietokantaan yhdistäminen. Kuvassa näkyy omia asetuksia.

    Olen laittanut tuohon palomuuriin oman ulkoisen IP:n ja varmuuden vuoksi vielä sisäisenkin IP:n, jotta mitään ei ainakaan estyisi.

    Tämän jälkeen kokeilin vaihtaa yhdistämisparametrit Node.JS ohjelmaan. Alussa koitin yhdistää näin:

    Koodi:
    let TryConnect = (callback) =>
    {
        const connection = mysql.createConnection({
        host: 'XXXX.database.windows.net',
        user: 'XXXX',
        password: 'XXXX',
        database: 'VirRake'
        });
      
        connection.connect((err) => {
            if (err) {
                callback("Cannot connect to database");
            } else {
                callback(undefined, connection);
            }
        });
    };
    
    Tulee virhe: 'Cannot connect to Database'. err virheessä lukee:
    Koodi:
      'code: 'UNKNOWN_CODE_PLEASE_REPORT',
      errno: 9002,
      sqlMessage:
       'The connection string may not be right. Please visit portal for references.\u0000',
      sqlState: '28000',
      fatal: true }'
    
    Mistä tuota connection stringia voi muuttaa tai mitä sille pitää tehdä?


    Tämän jälkeen kävin hakemassa netistä koodia, jonka avulla noden pitäisi ainakin yhdistää:
    Koodi:
    var Connection = require('tedious').Connection;
    var Request = require('tedious').Request;
    
    // Create connection to database
    var config =
       {
         userName: 'XXXX', // update me
         password: 'XXXX', // update me
         server: 'XXXX.database.windows.net', // update me
         options:
            {
               database: 'defects' //update me
               , encrypt: true
            }
       }
    var connection = new Connection(config);
    
    // Attempt to connect and execute queries if connection goes through
    connection.on('connect', function(err)
       {
         if (err)
           {
              console.log(err)
           }
        else
           {
               console.log("Connected")
           }
       }
     );
    
    Tulee kuitenkin virhe:
    message: 'Login failed for user \'XXXX\'.',
    code: 'ELOGIN' }

    ongelma.png
     
  2. edup

    edup

    Viestejä:
    1 248
    Rekisteröitynyt:
    17.10.2016
    Ei oo tuo NodeJS niin hallussa, mutta tuo ensimmäinen nyt vähän näyttäisi siltä että sulla on SQL-serveri eikä MySQL-serveri, ja yrität ottaa siihen yhteyttä MySQL-connectorilla...

    Tuo jälkimmäinen näyttää jo fiksummalta yritykseltä. Käytäthän siinä niitä SQL Serverin luontivaiheessa määrittämiäsi admin-tunnuksia etkä omia Azure-tunnuksiasi tms.?
     
    Viimeksi muokattu: 12.06.2018
  3. Jean_Sipulius

    Jean_Sipulius

    Viestejä:
    257
    Rekisteröitynyt:
    17.10.2016
    Joo käytän noita mitä määritin SQL servun luontivaiheessa. Totta muuten, tuo ensimmäinen on MySQL. En ajatellut, että toiminnassa olisi eroa. Outoa tosin kun tuo toinen yrityskään ei tuota tulosta. Eikä tuo virhe sano muuta kuin Login failed for user. Hmm.
     
  4. Jean_Sipulius

    Jean_Sipulius

    Viestejä:
    257
    Rekisteröitynyt:
    17.10.2016
    Voi emätinmunaus! lol. Olin laittanut tuohon Database kohtaan TAULUN nimen. Ongelma selvisi kun loin varmuuden vuoksi toisen tietokannan ja aloin katsomaan, että mitä hittoa olen tehnyt. Harmi vain kun koodit menee sitten uusiksi kun ne on tehty MySql mielessä... Azuren MySql taas maksaa moninkertaisesti enemmän kuin pelkkä sql.

    Kiitos kun sanoit, että ne on eri asiat. Olisin ihmetellyt maailman tappiin asti.