Page 1 of 1

Activating NLS

Posted: Thu Jan 06, 2005 11:35 am
by billsklar
It seems that we need to turn on NLS. We've been running without for about a year and I was wondering if there was anything I needed to be aware of before turning it on (i.e. recompiling jobs, new options, server reboot etc.)?

There is no specific language need, it's just that to use nchar or nvarchar we need to have it enabled.

Thanks,

Bill

Posted: Thu Jan 06, 2005 3:22 pm
by ray.wurlod
First, your server must have been installed with NLS. If this was done your uvconfig file will have a list of configuration parameters whose names begin with "NLS". NLSMODE is the "master switch" - if NLS is installed but not enabled, then NLSMODE is set to 0. If NLS is not installed, you need to re-install the DataStage server, this time with NLS.

There will be a couple of questions added to the install procedure, about your default language.

Flipping the master switch involves setting NLSMODE to 1, altering any of the other NLS parameters (refer to the NLS Guide which is, these days, part of the standard set of manuals), then regenerating the shared memory image and re-starting DataStage.

You do not need to re-compile any jobs. :D

You do need to be aware that internal storage requirements may increase. With NLS, DataStage internally uses a UTF-8 encoding of Unicode rather than ASCII for its storage of data (for example in hashed files).

(Do you really need NLS for NCHAR? Can't you simply do something like SELECT CAST(NCharColumn AS CHAR(10)) FROM table... ?)

Posted: Thu Jan 06, 2005 4:36 pm
by billsklar
The target table uses nchar so I think if nothing else I would get a metadata mismatch ( :( ) for every row.

Posted: Thu Jan 06, 2005 7:22 pm
by ray.wurlod
If the DataStage metadata specifies CHAR and your SQL specifies CAST(column AS CHAR) then you will not get a metadata mismatch. The metadata are compared against the result set on a SELECT, not on the base tables.