Skip to main content

Figuring out the Server Name

A bit about our Off-site Server Project
The aim of this project was always to have an off-site server that was capable of providing us with alternative facilities in the event of a disaster. My employers were on Domino before I started working here (7 years ago) and many of our oldest databases are in relatively "untouched" form. One of the biggest challenges of our off-site server project was always going to be the detection and removal of server-name hard-coding.

Discovering all those server names was a tedious business which I won't go into here. This blog entry will provide you with one bit of code we used to replace a single-line server name. We used several different methods but this method is interesting in that it provides an alternative when the server is local.

Getting the Server Name itself
Generally, getting the server name in a late-domino server is quite easy. There's an @function (@ServerName) for it from R6 onwards, and prior to that it was accessible via @DBName. There are also script methods which I'll detail here. One problem can arise when you don't want the server to be local.

What you need for the Code Sample
The code sample will identify the current server name using LotusScript. If the current server name is local (ie: if we're running from a local replica) it will then use a keyworded value instead. This enables you to have a local replica for speed reasons but access a server for things that really need to. The keyword value is a document in a view called KRetrieval with the first column containing the keyword ServerName and the second column containing the name of the domino server to be used if the database is local. We use the amazingly handy evaluate function to retrieve that value.

A bit of code
Admittedly, this isn't the cleanest of code, but it does the job.

Dim session As New NotesSession
Dim db As NotesDatabase
Dim docs As NotesDocumentCollection
Dim doc As NotesDocument

Set db = session.CurrentDatabase
Set docs = Source.Documents
Set doc = docs.GetFirstDocument()

Dim ServerName As New NotesName(db.Server)
Dim KeywordServerName As String
Dim EvaluateArray As Variant
Dim ServerToUse As String

EvaluateArray = Evaluate({@If(@IsError(@DbLookup("":"NoCache"; ""; "KRetrieval" ; "ServerName"; 2 )) ; "" ; @DbLookup("":"NoCache"; ""; "KRetrieval" ; "ServerName"; 2 ))})

KeywordServerName = EvaluateArray(0)

If Ucase$(Trim$(ServerNameText)) = "LOCAL" Then
Print "You are running this DB from a LOCAL Replica - will use Keyworded Server Name"
ServerNameText = ""
End If

If Trim$(ServerNameText) = "" Then
Print "Setting Server Name to Keyworded Server Name :" + KeywordServerName ServerNameText = KeywordServerName
End If

Comments

Popular posts from this blog

How to Change Your Notification Options for New Lotus Notes Mail in version 8.x

Don't worry, I'm not patronizing you (my readers), I just decided to re-document this for one of our internal users and thought you might want to be able to use it in your own user documentation. WHAT IS THIS DOCUMENT ABOUT? Some people who don't get a lot of mail, like to be notified when such an event occurs. Notification can be; via a sound via a pop-up box via the system tray (where the computer clock is) The pop up box looks like this; Other people, who like myself, get too much mail would rather not be notified. The aim of this document is to tell you how (and where) to turn these options on and off. CHANGING YOUR SETTINGS To change your settings from the Notes 8.x client; On the Menu, click File , then Preferences... On the left hand side , click on the little plus sign to the left of Mail to expand the options. Click on the option marked Sending and Receiving . In the middle section, under receiving, you can control your notifications. If you untick the box mark...

How to Create a Bootable DVD Using Nero Burning ROM 9

I often need to create bootable CDs and DVDs but it's weird because I frequently end up buring myself a new coaster instead. It's not that the process is difficult, just that nero has a few too many options and I forget which ones to choose and end up picking the wrong one. I figured that the best way to avoid this mistake in future would be to write the steps down. Procedure Insert CD or DVD into your DVD Burner. Start Nero Burning ROM 9 Choose DVD-ROM (Boot) or CD-ROM (Boot) depending on what you're creating You'll be prompted for a disk image source. Choose a Nero Source - you'll usually find them somewhere like this... C:\Program Files\Nero\Nero9\Nero Burning Rom\DOSBootImage.ima Leave the Boot Locale as English - unless you really need a different keyboard layout Tick the box marked [X] Enable Expert Settings Choose Hard Drive Emulation and leave any other settings as they are. Click the button marked New Add any files you want but don't try to add operati...

How to Create an Auto-Response Mail Message in Lotus Notes 8.5.3+

Why would you do this? Suppose that you have an externally accessible generic email address for your company; support@mycompany.com or info@mycompany.com. You might expose this to the web and allow people to send messages to you. Setting up an auto-response email will tell the senders that their message reached its destination and that it will be dealt with accordingly.  It's also good practice to include links to FAQs or other useful information. Why 8.5.3 The techniques we'll be using here work in older versions of Notes but some of the options seem to have moved around in 8.5.3.  I figured it was a good time to show you where they've moved to. The Procedure Start Domino Designer and open the Mail file to be modified.  A really quick way to do this is to right-click on the application tab and choose "Open in Designer". In the Left hand panel of designer, expand Code and then double-click Agents.  A new window should appear. Click the action ...