0

我正在尝试使用 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。

我的问题的第二部分是,为什么在 Azure 下使用 node-mssql 不起作用?我只是得到一个失败的连接错误,即使我已经多次验证了详细信息(用占位符代替下面的实际值):

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 下执行此操作的最佳方法,但我尝试了几天没有成功。我有什么明显的遗漏吗?

4

2 回答 2

1

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

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}'
}
于 2014-02-27T20:30:07.103 回答
0

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

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

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

于 2014-02-27T02:38:28.110 回答