我正在尝试使用node-mssql连接到Azure上的数据库。我的开发系统是Windows 7,我没有成功通过WebMatrix安装node-sqlserver。
我的问题有两个部分:首先是否有任何理由,即使我按照Microsoft的指示,我得到了node-sqlserver的错误?在WebMatrix中使用NPM尝试天真的方法我得到以下错误:
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 node-sqlserver@0.1.0 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 Professional。
我的问题的第二部分是,有什么理由说使用node-mssql在Azure下不起作用?我只是得到一个失败的连接错误,即使我已经多次验证了详细信息(替换以下实际值的占位符):
var config = {
user: '{username}',
password: '{password}',
server: 'tcp:{server}.database.windows.net',
database: '{database}'
}
我收到以下错误:
{“name”:“ConnectionError”,“message”:“与tcp的连接:{server} .database.windows.net:1433> - 失败错误:getaddrinfo ENOTFOUND”}
我意识到node-sqlserver是在Azure下执行此操作的最佳方式,但我已经尝试了几天但没有成功。我有什么明显的遗失吗?
答案 0 :(得分:1)
1)您可以通过从this repo下载预编译的node-sqlserver
驱动程序来解决此问题。即使安装了所有dev依赖项,我也无法在我的机器上编译源代码。
2)node-mssql
模块使用三个不同的驱动程序与sql server通信。您的配置未指定任何驱动程序,因此使用默认驱动程序 - Tedious
。您必须更改配置才能使其正常工作:
var config = {
user: '{username}',
password: '{password}',
server: '{server}.database.windows.net', // simply remove "tcp:"
database: '{database}'
}
还可以选择将node-mssql
与node-sqlserver
一起使用,但要使其正常工作,您必须手动安装已编译的node-sqlserver
驱动程序。配置应如下所示:
var config = {
driver: 'msnodesql',
user: '{username}',
password: '{password}',
server: 'tcp:{server}.database.windows.net',
database: '{database}'
}
答案 1 :(得分:0)
去年,当模块名为node-sqlserver
时,我正在使用Node.js中的SQL Azure,所以我的回答可能不起作用。
参考您的第一个问题,在NPM安装期间,需要通过node-gyp
和C++
编译node-mssql。因此,您最好检查是否安装了C ++编译器。当我安装它告诉我,我需要VS2010 C ++。不确定您现在是否需要它,或任何更高版本。您可以从命令窗口运行npm install node-mssql
,如果失败,您应该获得一个日志文件,应该是npm-error.log
或类似的东西。
参考你的第二个问题,当我使用这个模块时,我使用连接字符串。您能否仔细检查您的用户名是否以user@server
格式指定。还要仔细检查是否为其他云服务打开了SQL Azure防火墙。