项目要求需要还原SQL Server 2008以前的.bak备份,并导出CSV或XLSX,因此考虑将还原备份这件事打包成一个本地服务。在局域网内的一台Windows服务器上运行,通过RPC和RESTful方法来调用。但是毕竟很久不碰Windows了,所以上手遇到一些难度。


  1. 前期工作

    如果不得不在Windows下进行开发,最快速帮助你找回开发感觉的是一个顺手的编辑器和命令行环境。cmder(命令行环境)和VSCode是你的好朋友。

  2. Node.js

    在Windows下也没有homebrew或apt一类的东西,直接到官网下载MSI安装包就可以了。

  3. SQL Server 2008 R2 Express

    如果想通过Node.js对数据库进行查询,可以使用Tedious.js。这是Node.js的TDS协议实现,能够较好地兼容各个SQL Server版本。然而对于一个新安装的SQL Server 2008是没法直接通过Node.js来连接的。你需要做几件事:

    1. 允许SA (SQL authentication) 方式登录。你需要先进入SSMS (SQL Server Management Studio),以Windows账户直接登入Object Explorer。登入之后右键单击Object Explorer的根目录,也就是你的数据库instance,在菜单中选择Properties,找到Security,在Server Authentication中选择 “SQL Server and Windows Authentication Mode”。

      SQL Server 2008 R2 + Node.js_SQL Server 2008

    2. 接下来,在Login中新建一个通过SQL Server Authentication方式登入的用户账户,也就是要通过Node.js登入的用户账户。

    3. 接下来要特别注意,Tedious.js的默认查询端口是1433,但实际上SQL Server会用到一个动态端口。为了保证服务重启之后Node.js server总是监听同一个端口,要去 SQL Server Configuration Manager里面,找到SQL Server Network Configuration中的TCP/IP里进行设置,将TCP/IP中的Dynamic Ports置空,然后在TCP Port中写下要监听的端口。

      SQL Server 2008 R2 + Node.js_Node.js_02


接下来,你就可以根据Tedious.js提供的示例代码快速上手了。