我正在尝试使用node-mssql连接到Azure上的数据库。我的开发系统是Windows7,我根本没有成功通过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专业版。

我的问题的第二部分是,是否有任何理由使用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下执行此操作的最佳方式,但我已经尝试了几天没有成功。有什么明显的我错过了吗?

有帮助吗?

解决方案

1)你可以通过下载预编译来解决它 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-mssqlnode-sqlserver 但要使其工作,你必须安装编译 node-sqlserver 手动驱动程序。配置应该是这样的:

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

其他提示

我正在从Node使用SQL Azure。js去年当模块被命名 node-sqlserver 所以我的答案可能不起作用。

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

参考你的第二个问题,当我使用这个模块时,我使用连接字符串。你能再检查一下你的用户名是用格式指定的吗? user@server.还要仔细检查您的SQL Azure防火墙是否为其他云服务打开。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top