解决PostgreSQL不能在Terminal Services会话中安装的问题

安装PostgreSQL出现如下问题:
 The PostgreSQL installer must be run on the system console, not in a terminal services session.

原因分析:Go Daddy的virtual dedicated server有一些权限限制,特别是其Windows Server 2003系统无法顺利安装PostgreSQL。运行pgsql的官方二进制安装包(至少包括8.1和8.2版本,可能包括所有版本),会出现以上提示。这是因为,为了初始化数据库,PostgreSQL安装程序需要启动一个独立的后台进程,因此安装程序不能在终端服务会话中运行,需要从控制台中启动。
     一般要解决这个问题,可以通过在客户端执行mstsc /console命令来启动远程桌面连接,这会锁定服务器上的本地控制台而拥有完全的控制权,这样PostgreSQL的安装就没有问题。而GoDaddy的VDS有较严格的访问限制,mstsc /console是无法成功建立连接的。VNC也无法正常连接。

     不过还是可以另辟蹊径的。pgsql的备份方式中,有一种文件系统级别的备份,就是直接copy数据库目录,还原时覆盖即可。这就意味着,pgsql的数据都是纯粹以文件的形式存在的。经过hotpoint一个下午的勇敢探索,研究出以下方法:
        首先,在普通系统上正常安装好pgsql(当然两边的OS要一样),并复制整个安装文件夹,如C:\PostgreSQL。
不一定是新装的pgsql。已有系统的也可以,这也相当于是迁移现有pgsql到其他系统的一个便捷方法。

1.将文件复制到新系统,下面以C:\PostgreSQL为例

2.在系统中建立一个普通用户postgres


3.以系统管理员身份登陆,进入C:\PostgreSQL,然后运行以下命令设置权限:
cacls .    /T /E /P postgres:R
cacls data /T /E /P postgres:C

4.再进入C:\PostgreSQL\bin目录,运行命令注册服务:
pg_ctl register -D c:\PostgreSQL\data -N PostgreSQL

上面两步的操作输出如下:


5.打开Services管理,会看到新增的PostgreSQL服务

在Log On中修改该服务的启动用户为postgres


现在启动PostgreSQL服务吧!!
 

 

你可能感兴趣的:(PostgreSQL,SQL安装)