123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- REM *************************************************************************
- REM
- REM Licensed Materials - Property of IBM
- REM
- REM "Restricted Materials of IBM"
- REM
- REM IBM Informix Dynamic Server
- REM Copyright IBM Corporation 2008 All rights reserved.
- REM
- REM Title: blduser.bat
- REM Description: Script to create database sysuser
- REM
- REM *************************************************************************
- REM ###
- REM # Set infdir and outfile name
- REM ###
- set INFDIR=%INFORMIXDIR%
- set OUTFILE=%INFDIR%\tmp\blduser.out.%INFORMIXSERVER%
- set CHKFILE=%INFDIR%\tmp\sysuserdbchk.out.%INFORMIXSERVER%
- set BLDUSER_STATFILE=%INFDIR%\tmp\blduser.%INFORMIXSERVER%.sql
- set SYSUSERDB=sysuser
- REM ###
- REM # Inherit the message constants
- REM ###
- call %INFDIR%\etc\conv\strmaps.bat
- REM ###
- REM # Setup the WINROOT path
- REM ###
- set WINROOT=%SystemRoot%
- if "x%WINROOT%" == "x" set WINROOT=C:\WINDOWS
- REM ###
- REM # Remove emergency boot file since it's data is now obsolete
- REM ###
- copyboot
- REM # Put something in output file, so user knows something happened
- type %INFDIR%\etc\blduser.1in > %OUTFILE% 2>&1
- set DBPATH_PREV=%DBPATH%
- set DBPATH=
- set DBCOUNT=0
- set TABCOUNT=0
- REM Create 'sysuser' in English
- set DB_LOCALE=en_us.8859-1
- set CLIENT_LOCALE=en_us.8859-1
- REM Create print_msg.sql and call it through dbaccess from print_msg.bat
- REM to print message to online.log
- echo echo set lock mode to wait 60; ^> print_msg.sql > print_msg.bat
- echo echo database sysmaster; ^>^> print_msg.sql >> print_msg.bat
- echo echo insert into logmessage values (%%1%%); ^>^> print_msg.sql >> print_msg.bat
- echo %INFDIR%\bin\dbaccess - print_msg.sql >> print_msg.bat
- REM If the database 'sysuser' exists then we don't have much to do
- echo output to "%CHKFILE%" without headings > %INFDIR%\tmp\blduser1.sql
- echo select count^(*^) from sysdatabases where name = '%SYSUSERDB%'; >> %INFDIR%\tmp\blduser1.sql
- %INFDIR%\bin\dbaccess sysmaster %INFDIR%\tmp\blduser1.sql
- del %INFDIR%\tmp\blduser1.sql
- IF EXIST %CHKFILE% (
- FOR /f "delims== " %%i IN ('type %CHKFILE%') do set DBCOUNT=%%i
- del %CHKFILE%
- ) ELSE set DBCOUNT=0
- del %OUTFILE%
- IF %DBCOUNT% == 0 GOTO bldsysuser
- REM If the database 'sysuser' exists then we check 'sysauth' table
- echo output to "%CHKFILE%" without headings > %INFDIR%\tmp\blduser2.sql
- echo select count^(*^) from systables where tabname = 'sysauth'; >> %INFDIR%\tmp\blduser2.sql
- %INFDIR%\bin\dbaccess sysuser %INFDIR%\tmp\blduser2.sql >> %OUTFILE% 2>&1
- del %INFDIR%\tmp\blduser2.sql
- IF EXIST %CHKFILE% (
- FOR /f "delims== " %%i IN ('type %CHKFILE%') do set TABCOUNT=%%i
- del %CHKFILE%
- ) ELSE set TABCOUNT=0
- IF %TABCOUNT% == 1 (
- call print_msg.bat %S_SYSUSER_EXIST%
- del %OUTFILE%
- del print_msg.bat print_msg.sql
- goto exit
- ) ELSE (
- REM 'sysuser' exists, but it's not created by IDS
- call print_msg.bat %S_BLD_SYSUSER_FAIL%
- echo Database 'sysuser' exists, but it is not created by IDS. >> %OUTFILE% 2>&1
- echo >> %OUTFILE% 2>&1
- echo IBM Informix database server will store remote trusted user's authentication >> %OUTFILE% 2>&1
- echo information and database security administrator metadata in database 'sysuser'. >> %OUTFILE% 2>&1
- echo >> %OUTFILE% 2>&1
- echo Please drop database 'sysuser' and rerun blduser.bat as informix after the >> %OUTFILE% 2>&1
- echo server comes On-Line. >> %OUTFILE% 2>&1
- del print_msg.bat print_msg.sql
- goto exit
- )
- :bldsysuser
- REM ###
- REM # Build the 'sysuser' database
- REM ###
- echo "About to run sysuser.sql" >> %OUTFILE% 2>&1
- dbaccess - %INFDIR%\etc\sysuser.sql >> %OUTFILE% 2>&1
- REM # Check to see that there were no errors
- REM # Make sure find.exe runs from \winnt\system32 and not from a DOS directory
- %WINROOT%\System32\find /V "%INFDIR%" %OUTFILE% | %WINROOT%\System32\find /I "error"
- REM # 0 means found and error so sysuser.sql failed
- if ERRORLEVEL 1 goto SUCCESS
- if ERRORLEVEL 0 goto FAILURE
- :SUCCESS
- REM ###
- REM # Else it was successful, so remove OUTFILE and ...
- REM # put s_sysuser_succ msg into sysmaster 'logmessage' table.
- REM # See olmsg.src for msg.
- REM ###
- echo "Inserting success msg into logmessage table" >> %OUTFILE% 2>&1
- echo insert into logmessage(message_num) values (%S_BLD_SYSUSER_SUCC%); > %BLDUSER_STATFILE%
- dbaccess sysmaster %BLDUSER_STATFILE% >> %OUTFILE% 2>&1
- del %OUTFILE% print_msg.bat
- goto exit
- :FAILURE
- REM ###
- REM # Was there an error?
- REM # If yes, then drop 'sysuser' and ...
- REM # put s_bld_sysuser_err msg into the sysmaster 'logmessage' table.
- REM # See olmsg.src for msg.
- REM ###
- echo Cleaning up whatever was successfully created >> %OUTFILE%
- dbaccess - - < %INFDIR%\etc\blduser.2in >> %OUTFILE% 2>&1
- echo insert into logmessage(message_num) values (%S_BLD_SYSUSER_FAIL%); > %BLDUSER_STATFILE%
- dbaccess sysmaster %BLDUSER_STATFILE% >> %OUTFILE% 2>&1
- del print_msg.bat
- goto exit
- :exit
- del %BLDUSER_STATFILE%
|