2014-02-27 53 views
0

我试图使用node-mssql连接到Azure上的数据库。我的开发系统是Windows 7,并且我没有成功通过WebMatrix安装node-sqlserver来安装。在Azure下使用node-sqlserver或node-mssql

我的问题是两部分:第一,是否有任何理由,即使当我按照微软的指示,我得到node-sqlserver的错误?尝试使用NPM内WebMatrix中我得到以下错误的原始的方法:

An error occurred. 

"C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "node-sqlserver" "--json" 


Exit status 1 

Failed at the [email protected] install script. 
This is most likely a problem with the node-sqlserver package, 
not with npm itself. 
Tell the author that this fails on your system: 
    node-gyp rebuild 
You can get their info via: 
    npm owner ls node-sqlserver 
There is likely additional logging output above. 



Failed: npm reported an error. 

NodeNpm.NpmException: Failed: npm reported an error. 
    at NodeNpm.NpmApi.Install(INpmPackage package) 
    at Microsoft.WebMatrix.NpmGallery.CachingPackageManger.InstallPackage(INpmPackage package) 
    at Microsoft.WebMatrix.NpmGallery.PackageViewModel.Install() 
    at System.Threading.Tasks.Task.InnerInvoke() 
    at System.Threading.Tasks.Task.Execute() 

本机安装了VS2012专业。

我的问题的第二部分是,是否有任何理由为什么在Azure下使用node-mssql不起作用?我只是得到一个失败的连接错误,尽管我已经验证的细节几次(取代占位低于实际值):

var config = { 
    user: '{username}', 
    password: '{password}', 
    server: 'tcp:{server}.database.windows.net', 
    database: '{database}' 
} 

我得到以下错误:

{"name":"ConnectionError","message":"connection to tcp:{server}.database.windows.net:1433 >- failed Error: getaddrinfo ENOTFOUND"}

我认识到, node-sqlserver是在Azure下执行它的最好方法,但我已经尝试了几天而没有成功。有什么明显的我缺少?

回答

1

1)您可以通过从this repo下载预编译的node-sqlserver驱动程序来解决此问题。即使安装了所有的开发依赖项,我也无法在我的机器上编译源代码。

2)node-mssql模块使用三种不同的驱动程序与SQL服务器进行通信。您的配置没有指定任何驱动程序,因此使用默认驱动程序 - Tedious。你必须改变你的配置,使其正常工作:

var config = { 
    user: '{username}', 
    password: '{password}', 
    server: '{server}.database.windows.net', // simply remove "tcp:" 
    database: '{database}' 
} 

也有使用node-mssqlnode-sqlserver但要使它工作的一个选项,你必须安装手动编译node-sqlserver驱动程序。配置应该是这样的:

var config = { 
    driver: 'msnodesql', 
    user: '{username}', 
    password: '{password}', 
    server: 'tcp:{server}.database.windows.net', 
    database: '{database}' 
} 
+0

嗨Patrik,我终于能够得到它编译感谢这篇文章http://blog.gluwer。com/2013/07/windows-azure-websites-and-nodejs-the-setup /现在它可以工作。 – user3358344

0

去年,当我使用Node.js的SQL Azure时,模块被命名为node-sqlserver,所以我的答案可能无法正常工作。

引用你的第一个问题,在安装NPM期间,需要通过node-gypC++来编译node-mssql。所以你最好检查一下你是否安装了C++编译器。当我安装它时告诉我我需要VS2010 C++。不知道你现在是否需要它,或者任何更新的版本。您可以从命令窗口运行npm install node-mssql,如果失败,您应该得到一个日志文件,应该是npm-error.log或类似的东西。

参考你的第二个问题,我是用这个模块时,我使用的连接字符串。你可以仔细检查你的用户名是以[email protected]的格式指定的。同时仔细检查您的SQL Azure防火墙是否为其他云服务打开。

+0

嗨肖恩,节点SQLServer是微软官方的驱动程序,但我曾与它在所有要么在Azure上或IIS 7.5没有成功。 node-mssql是第三方驱动程序,它在IIS 7.5下IISnode下完美工作。我曾尝试使用npm和使用Microsoft推荐的方法来安装node-sqlserver。 – user3358344

相关问题