How To install a NAV Application Server (NAS)?

Author: Alain Krikilion (alias kriki)

http://www.mibuso.com/howtoinfoprint.asp?FileID=15

许多人都想知道如何才能安装并且运行NAS.实际上, 并不难. 但是如果你去看手册的话,看起来似乎很过它本身. 这是因为手册考虑到了所有的可能性. 本文描述了我是如何安装NAS的步骤。我也向我的同事解释了如何安装,他们也记了笔记,但是当用的时候,却读不懂。

所以我决定写本文说明如何安装NAS的小文章.

1. 在哪儿安装?

你可以把它安装在任何服务器上或者PC上。哪个最好?直到几年前我想还是最好不要安装在服务器上,因为NAS可能会用光CPU的所有处理能力,没给Database Server留下多少. 现在,很多服务器都不会成为一个问题了,因为有多个CPU或者核(在此,我用CPU,但是有也指一个CPU里的核). NAS使用一个Core.

如果你有一个Navision-Server,就不会有问题,因为它只使用一个核,或者都不需要。只有当NAS与DB-server 使用同一个core的时候才会有负面影响. 不知道是否有可能控制它,但是我希望Windows能够尽量把工作分给不同的core.

如果你有一个SQL-Server,你肯定就需要多核(我认为SQL最少需要四个核)。那样就算NAS完全占用了其中一个,还有其它三个用于SQL。 在正常情况下,一个在SQL上的Navision-DB 不会使用很多资源。

简言之,我认为在数据库上安装NAS消耗资源的坏处要小于NAS可以不用中间网络来直接与服务器通信所带来的好处。我注意到,很多时候客户端直接在服务器上进行的话会更快(记住:NAS是一个客户端,但是没有用户干预)

2. Window login

NAS需要一个Window login来登录数据库。这是因为它是一个服务,而且并不可能在一个服务里面来定义一个Database Login.这个服务需要一个Window login来起动(就象你要登录到Windows). 所以你需要在域里或者服务器上创建一个Login. 通常我会使用域管理员帐户,因为这样就能读写网络里面的东西。至少用这个你可以保证权限不会有问题。当然,你必须保证用户不能创建含有能让他成为域管理员指令的指令文件,再给NAS来起动。 不过,在大部分情况下,这不是一个问题。

3. SQL-login (如果你有一个SQL数据库的话)

现在你有了Window Login, 但是这个login在SQL服务器上还没有权限。所以你需要在SQL服务器上创建Window Login然后让它成为sysadmin. 请自己查看关于如何在SQL这么做的手册。

4. NAV-login

现在你在Windows与SQL(如果你有一个SQL数据库的话)上都OK了,但是你仍然进入不了Navision,所以你需要在Navision数据库上使用一个Navision SUPER用户来创建帐户(在Navison客户端中:Tools => Security => Windows login ,然后给你的Window用户以SUPER Role)。现在在权限方面你已经万事具备了.

5. Installing the NAS.

手持安装CD,运行/Nas/setup.exe 文件,接受所有默认设置。但是记住安装NAS的子目录在哪儿。你之后需要用到.

6. NAS-services (run services.msc)

通常,我从来不使用NAS的默认配置 (nas.exe 与 nassql.exe都是).我会disable这些服务(properties of the service => Startup Type=Disabled).

我为什么会这么做呢?

I我注意到有些时候NASSnapIn.msc不工作, 所以我不能容易地控制或者改变NAS的设置。
如果你需要多个NAS,下一个你就需要手工设置了。所以我第一个就手动安装然后之后只需要copy或者改变一些参数就可以了。
7. 手动安装NAS

我总是使用命令文件来配置和起动或 和卸载/或停止这些服务。这些几乎总是如此,所以我总是copy这些文件和改变一些参数

以下这些事情需要做:

把安装的NAS子目录(还记得我要你记住NAS安装在哪儿吗?) copy到你想要的地方或者给一个你想要的名字.
在NAS子目录中创建以下指令文件:(注意下面命令行之前不可以有回车,最好是一行,否则指令出错)
nasstart.cmd (for SQL-DB)
nassql.exe appservername=TheNasName, NETTYPE=TCP, servername=TheSQLServer,
database=TheSQLDatabase, company="The Company", nettype=tcp,
startupparameter=”THEPARAMETER”, objectcache=40000, installasservice

net start TheNasName.nasstop.cmd (for SQL-DB) (你在第二行的开始要加上":"(原文为";"))
net stop TheNasName

:nassql.exe appservername=TheNasName, uninstallasservicenasstart.cmd (for Navision-DB)
nas.exe appservername=TheNasName, NETTYPE=TCP, servername=TheNAVServer,
company="The Company", nettype=tcp, startupparameter=”THEPARAMETER”,
objectcache=40000, installasservice

net start TheNasNamenasstop.cmd (for Navision-DB) (你在第二行的开始要加上":"(原文为";"))
net stop TheNasName

:nas.exe appservername=TheNasName, uninstallasservice如果你想测试一个来自DOS-prompt的NAS,就移除"installaservice",保存文件然后运行. NAS会起动,但是它会使用你现在的login去连接数据库,所以要确保你有相应的权限。之后,你再添加“, installasservice”.
参数:
appservername: 这是你给NAS命名的名字. 这只在Windows中使用的名字(This is only the name to be used as reference in Windows).这对Navision C/AL没什么意义。最好避免在这个名字里加上空格或者其它奇怪的字符.
servername: Navision-server 或者SQL-server的名字
databasename: (SQL only) database的名字.
startupparameter: NAS的起动参数. 这个值会在Navision C/AL中使用. 之后会有更多的关于这个的信息.这个名字最好只使用字母数字,不要使用空格或者任何其它怪字符. 如果你想要NAS从事多项工作, 你可以加上一组起动参数,由逗号分隔,比如: startupparameter=”JOB1,JOB2”
现在执行nasstart.cmd. 这将起动NAS作为一个Service. 在起动了Service后,加一个“:”在nas.exe 或者nassql.exe 命令行前. 这是指注释掉这项命令行的意思. 从现在开始,如果有需要的话,你可以使用nasstart.cmd(当然也有nasstop.cmd .and also nasstop.cmd)来起动在其它指令文件中的服务.

NAS成功起动!
8. NAS-服务(运行 services.msc)

现在我们要修正一些NAS-服务的属性值。打开你新创的NAS-服务的属性

Tab General
Startup Type:Automatic (这个值可以保证当服务器起动的时候这项服务也起动) (当只是安装NAS时,这儿应该是automatic).

Tab Log On (这儿你必须输入你在SQL-security和Navision-security定义的Windows login)
This account: Put your windows useraccount in it
Password, confirm password: put the password of the account

Tab Recovery (万一NAS崩溃, 它将自动重新启动)
First failure, Second failure, Subsequent failures: Restart the service.
Restart service after: 0 minutes

当确认的时候,你会得到以下信息:

它的意思就是你需要重新起动NAS-service:

9. 如果成功那如何控制NAS

起动eventviewer (eventvwr.msc).
点击Application,然后在Column Source中搜索你的NAS. 你应该找两条类型信息

如果你查看一下这两个事件的属性,你应该可以看到类似以下的信息:

这就意味头NAS启动成功而且控制权已经被给与在Codeunit 1中的ID为99的function:(就是NasHandler)
10. C/AL

现在我们已经有了一个NAS-service运行, 但是 C/AL 还不知道怎么做。所以我们必须解释给 C/AL 听。NAS有一个传给Navision代码的参数(“startupparameter=” ). 现在Navision C/AL必须由这个参数做一些事了。Navision起动codeunit 1中的ID为99的function.这个function有一个输入参数(text 260). 在这个变量中,会是输入型参数.

或者你使用在Navision已经存在的标准的functioality,而你只需要为它做一些设置(请查看合适手册)

或者你想使用你自己的functionality. 在这种情况下,你需要做一些代码工作. 在这个地方,你可以添加一些代码解释Navision需要做的事情:

IF CGNASStartedinLoop = FALSE THEN
    CASE Parameter OF
//> START
      'THEPARAMETER': CODEUNIT.RUN(CODEUNIT::”Some CodeUnit”);
//< STOP
      'OSYNCH','JOBQUEUE':
通常一个singleinstance codeunit 被起动然后配置一些东西然后再沉睡或者等待一些事件来开始工作. 一个事件也可以是Timer-event, 在消息队列中的消息的来到或者named pipe或者是其它事情.

11. 在C/AL中与NAS交互时需要避免事情:

你不应该在Navision中使用对话框,确认框, strmenu. NAS不喜欢这些并且会给出一个错误. 你会得到以下类似错误:

为了避免这类错误,你需要加一些以下类似代码(一个例子,你可以在codeunit 90:"Purch.-Post"中找到):

IF GUIALLOWED THEN
      Window.OPEN(
请不要问为什么不用codeunit 80:”Sales-Post”来做这个测试.

12. 在 C/AL与NAS交互时需要避免使用的对象

我另外做了一些说明,所以这非常清楚. 有些对象(Forms,Dataports)不能与NAS使用:

DATAPORTS CANNOT BE RUN WITH THE NAS!!!!

这就是你会得到的错误:

怎么办? 创建一个report或者codeunit,然后使用一个FILE来读写。但是你不能指望由dataport来提供进行自动处理.

13. 在C/AL代码中的消息与错误.

这些并且特殊问题. 这些消息做为类型消息在eventviewer有写入日志. 然后C/AL继续它的工作.

这是我的MESSAGE-statement:

MESSAGE('The NAS has been started.');
 这些消息也会做为类型消息在eventviewer有写入日志,当然处理过程碰到错误就会停止.如果这是从codeunit 1中的NasHandler功能中的代码导致的错误,那么NAS就会崩溃. 不过如果你配置了服务的正确属性, 那么服务就会自动起动.

如果这是在单例codeunit中写的代码,则NAS-Service就不会崩溃.  单例codeunit可以通过Event-Triggers来重新启动本身. 以后可以做一例子来说明如何来处理.

这是我的ERROR-statement:

ERROR('The NAS has an ERROR-statement in it.');
14. 单例codeunit.

这是一个属性SingleInstance=Yes的codeunit. (想知道它的意思,请查阅在线帮助或者手册).

以下说明了如何创建一个单例codeunit,可以每N秒触发. 这可以用于检查是否有工作可做,然后就去做.
在单例codeunit中,你需要定义一个全局变量:

autNavisionTimer of type automation and subtype: 'Navision Timer 1.0'.Timer这个全局变量需要把属性设置为WithEvents=Yes.
这个属性会创建两个另外的方法(functions):

autNavisionTimer::Timer(Milliseconds : Integer)
autNavisionTimer::TimerError(ErrorString : Text[1024])
在方法“autNavisionTimer::Timer” 中, 需要把放入你想每N秒来触发的代码. 最好创建一个方法然后把代码放哪儿,这样只需要从触发器中调用方法就成. 记住如果你删除了全局变量, 你就会在那个触发器中失去所有的代码!.

如果在代码中有错误,NAS不会崩溃. 全局变量的Timer-function不会重新启动function, 就象没有发生什么错误似的.

在codeunit中的OnRun-trigger中, 你需要初始化这个automation:

OnRun()
CREATE(autNavisionTimer);
autNavisionTimer.Interval(10000); // this will trigger every 10 seconds
autNavisionTimer.Enabled(TRUE);
也请记住在OnRun-trigger 中的错误会导致NAS-Service崩溃. 在这种情况下, Windows将会重新启动NAS-Service(至少如果服务的属性设置正确).

自己注: 不需要安装business notifications。并且在NASHANDLER里面只留下case语句。

我的成功配置:

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/BlueSeaWindow/archive/2011/01/11/6129708.aspx

How To install a NAV Application Server (NAS)?相关推荐

  1. 安装WebSphere Application Server

    2 WebSphere Application Server 2.1 安装WebSphere Application Server 2.1.1 使用imcl安装WebSphere Applicatio ...

  2. 版主上路之 Application Server

    Topic: 版主上路之 Application Server 論述篇 (1)   Print this page 1.版主上路之 Application Server 論述篇 (1) Copy to ...

  3. Oracle Application Server 10.1.3.0 for IBM X346 (Linux X86)安装手册

    一.安装准备 (一)  检测硬件需求 CPU :至少Pentium 450 MHZ 执行以下命令来检测: [root@localhost /]# grep MemTotal /proc/meminfo ...

  4. IBM WebSphere Application Server 诊断和调优

    近段时间,我们项目中用到的WebSphere应用服务器(WAS),但在客户的production环境下极不稳定,经常宕机.给客户造成非常不好的影响,同时,也给项目组很大压力.为此,我们花了近一个月时间 ...

  5. The application server could not be contacted

    从PostgreSQL 9.6升级到PostgreSQL 10后,在使用过去的pgAdmin 3出现了很多问题,无法完全支持PostgreSQL 10. pgAdmin 4体验差,用起来很糟糕,关键是 ...

  6. 简介 NetWeaver Application Server 的三层架构

    NetWeaver Application Server 是三层架构: Presentation layer .Application layer .Database layer . 上图来自于 he ...

  7. WebSphere Application Server v6中的问题诊断以及日志策略

    WebSphere Application Server 是一个基于 Java 的 Web 应用程序服务器,它构建在开放标准的基础之上,能帮助您部署与管理从简单的 Web 站点到强大的电子商务解决方案 ...

  8. WebSphere Application Server 5.0在Linux平台上中文界面乱码问题的解决

    第一部分:问题描述 当WebSphere Application Server(以下简称为WAS)安装到中文Linux平台时,经常出现中文被显示为方块的情况,如下图所示: 图 1 应用程序组装工具乱码 ...

  9. sun服务器dt消息不能被启动,Sun ONE Application Server 错误

    Sun ONE Application Server 错误 缺省浏览器与 Sun ONE Application Server 7 不兼容 (4741123) 通过 Solaris 9 12/02 操 ...

最新文章

  1. vue-cli3+typescript初体验
  2. nvidia的jetson系列的方案_NVIDIA Jetson Xavier NX开发者套件主要应用于自主机器边缘计算产品系列...
  3. php数据库可转java数据库,php转java 系列2 Spring boo 链接数据库jdbc
  4. 【操作系统】分段内存管理
  5. JAVA大数据-Week4-DAY6-JDBC
  6. c语言数字按键消息响应',c语言程序使用钩子拦截键盘消息的有关问题
  7. Httpclient4 简介
  8. 安装 MaxScale
  9. rockyLinux 初体验PostgreSQL15详细安装教程
  10. ASP是什么?ASP初识
  11. java如何利用rotate旋转图片_JAVA对图片的任意角度旋转,以及镜像操作
  12. 实践是检验真理的唯一标准!
  13. 帧同步与状态同步:方案比较
  14. 洛谷 CF311B Cats Transport
  15. bind函数怎么用JAVA_JavaScirpt 的 bind 函数究竟做了哪些事
  16. UGUI内核大探究(九)Image与RawImage
  17. MFC 获取所有USB设备 列举所有USB设备 列举所有USB HUB
  18. 全球及中国便携式血糖仪行业规模分析及十四五发展动态预测报告2021年版
  19. 在vi 中设置tab键为4个空格,并显示行号,对文件中的TAB与空格进行相互转换
  20. MATLAB-AHP(层次分析法求解)

热门文章

  1. NetApp SnapCenter 备份管理 ——借助应用程序一致的数据备份管理,简化混合云操作
  2. 解析模板 [index.html] 时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问
  3. win11专业版+VMware16.1.2+不可恢复错误: (vcpu-1) Exception 0xc0000005 (access violation)
  4. 简单说说USB协议(一)
  5. matlab的imshow, image, imagesc区别
  6. 深圳自建房能申请学位吗 自建房申请学位需要哪些材料
  7. Windows下编译Mitsuba 3
  8. 如何将其他语言添加到Office 2010
  9. Flume+Kafka+Spark Streaming实现大数据实时流式数据采集
  10. 三菱FX3U与2台台达温控器modbus通讯案例 功能:三菱FX3U与2台台达温控器进行modbus通讯