2015-12-18 20 views
7

MongoDBでHerokuにいくつかのサイトを展開しましたが、これはSQLでサイトを作成して展開しようとした初めてのことですAzureに、私はおそらく何か明白な行方不明です。sequelizeでSQL Azureデータベースに接続できませんが、localhost上のSQL Serverは正常に動作します

私はDevマシン上でNode.js、SQL Serverデータベース、ORMとしてSequelizeを使用してWebサイトを開発しています。すべて正常に動作しますが、接続文字列を使用してAzureにデプロイしようとすると、SQL Azureデータベースに接続できません。 SQL Server Management Studioを使用してAzureの空のデータベースに接続することができますので、接続情報が正しいことを確認します。

私はアズールに展開しようとしたとき、私はアズールが提供する接続文字列を試してみました:

var Sql = require('sequelize'); 
 
var sql = new Sql('Driver={SQL Server Native Client 11.0};Server=tcp:server.database.windows.net,1433;Database=databasename;[email protected];Pwd={password};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;');

を、私はこの文字列で接続しようとすると、私が取得エラーは次のとおりです。

C:\Users\username\Documents\GitHub\event-site\node_modules\sequelize\lib\sequelize.js:110 
 
    options.dialect = urlParts.protocol.replace(/:$/, ''); 
 
            ^
 

 
TypeError: Cannot read property 'replace' of null 
 
    at new Sequelize (C:\Users\v-mibowe\Documents\GitHub\event-site\node_modules\sequelize\lib\sequelize.js:110:40) 
 
    at Object.<anonymous> (C:\Users\v-mibowe\Documents\GitHub\event-site\routes\db-routes.js:68:11) 
 
    at Module._compile (module.js:435:26) 
 
    at Object.Module._extensions..js (module.js:442:10) 
 
    at Module.load (module.js:356:32) 
 
    at Function.Module._load (module.js:311:12) 
 
    at Module.require (module.js:366:17) 
 
    at require (module.js:385:17) 
 
    at Object.<anonymous> (C:\Users\v-mibowe\Documents\GitHub\event-site\server.js:16:1) 
 
    at Module._compile (module.js:435:26) 
 
    at Object.Module._extensions..js (module.js:442:10) 
 
    at Module.load (module.js:356:32) 
 
    at Function.Module._load (module.js:311:12) 
 
    at Function.Module.runMain (module.js:467:10) 
 
    at startup (node.js:136:18) 
 
    at node.js:963:3

db-routes.js:68:11はdbへの接続文字列です。

次のコードで接続を構成しようとすると、サーバーがクラッシュしたりエラーが発生したりすることはありませんが、スキーマのコードで作成する必要があるコンテンツは作成されません。このコードは次のようになります。事前に

var Sql = require('sequelize'); 
 
var sql = new Sql('dbname', 'username', 'password', { 
 
    host: 'localhost', 
 
    dialect: 'mssql', 
 

 
    pool: { 
 
    max: 5, 
 
    min: 0, 
 
    idle: 10000 
 
    } 
 
})

ありがとう:

var Sql = require('sequelize'); 
 
var sql = new Sql('dbname', '[email protected]', 'password', { 
 
    host: 'server.database.windows.net', 
 
    dialect: 'mssql', 
 
    driver: 'tedious', 
 
    options: { 
 
    encrypt: true, 
 
    database: 'dbname' 
 
    }, 
 
    port: 1433, 
 
    pool: { 
 
    max: 5, 
 
    min: 0, 
 
    idle: 10000 
 
    } 
 
});

(正常に動作します)私はlocalhostへの私の元の接続は、次のようになりますすべての助けのために!

+0

にSequelizeの問題レポでsimilar issueを参照することができます右?ファイアウォールをチェックしましたか? –

+0

@BrunoFaria私に戻ってくれてありがとう。 Herokuには何もない、アプリ全体がAzureで走っている。私は以前にアゼールに展開していなかったので、私はHerokuとしか言いませんでした。そして、私は、アズールで異なる方法で "Heroku"のやり方をしようとしているかもしれません。 – CascadiaJS

+0

SQL AzureファイアウォールでAzure Servicesがチェックされていますか?それ以外の場合は、手動でフロントエンドipを追加する必要があります。 –

答えて

6

Azure Sqlサーバに接続するには、接続ファクトリでencrypt: trueオプションを設定する必要があります。 Sequelizeで 、我々は機能の初期化にdialectOptionを指定することができます。

var Sequelize = require('sequelize'); 
var sequelize = new Sequelize('dbname', 'username', 'passwd', { 
    host: 'hostname', 
    dialect: 'mssql', 
    pool: { 
    max: 5, 
    min: 0, 
    idle: 10000 
    }, 
    dialectOptions: { 
    encrypt: true 
    } 
}); 

あなたは私が正しく理解している場合、アプリケーションは、Herokuのとアズールでデータベース上で実行されているGitHubの

+0

助けてくれてありがとうゲーリー・リウ - MSFT、私はほとんどそこにいると思います。あなたが与えた答えでは、接続文字列でオンラインのazureデータベースに接続することができますが、azureにデプロイすると、「内部サーバーエラーが発生したためページを表示できません」というエラーが表示されます。 – CascadiaJS

+0

通常、コードエラーまたは展開エラーにより500エラーが発生します。あなたのアプリケーションが 'sequelize'なしでうまく動くならば、コードに問題があるかもしれません。あなたのアプリケーションにnode.jsモジュールの依存関係がアップロードされているかどうかを確認してください。あなたのサイトのKUDUコンソールコマンドレットにログインできます。 'https:// .scm.azurewebsites.net/DebugConsole'を参照してください。 Azureアプリケーションを使用したNode.jsモジュールについては、https://azure.microsoft.com/en-us/documentation/articles/nodejs-use-node-modules-azure-apps/ –

+0

を参照してください。サイトの診断ログについては、https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/#enabling-diagnostic-logsを参照してください。そして**システムファイル**の層ログをKUDUのapi 'https:// <あなたのサイト名> .scm.azurewebsites.net/api/dump'からダウンロードすることができます –

1

Azure Servicesを追加するには、SQL Azure Firewallを有効にする必要があります。あなたのアプリケーションはSQL Azureと通信できません。

+0

ありがとうZeeMoussa、残念ながらそれは既に有効になっています – CascadiaJS

関連する問題