Autor Thema: Datenbank per Script verschieben  (Gelesen 4887 mal)

Offline gstueb

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
  • God is real unless declared integer
Datenbank per Script verschieben
« am: 10.06.16 - 15:40:12 »
Hallo,

kann ich eine Datenbank per Script in ein anderes Verzeichnis auf dem gleichen Server verschieben? Ich finde auf Anhieb keine Methode dazu.

Klar, ich könnte eine Replik erstellen und dann das Original zu löschen... aber ein einfaches verschieben, so wie man es von Hand im Administrator machen kann, wäre mir lieber.

Danke & Grüße,
Gregor


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Datenbank per Script verschieben
« Antwort #1 am: 10.06.16 - 15:48:01 »
Hierzu müsstest Du einen AdminP-Request ("mit allem und scharf!") erstellen. Domino-bezogene LS-Befehle gibt es für den Client nicht.

Bernhard

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Datenbank per Script verschieben
« Antwort #2 am: 10.06.16 - 20:48:04 »
Adminp ist die erste Wahl. Es gibt eine API funktion, mit der man das sehr elegant lösen kann. Damit lässt sich eine 64gb db im null komma nix auf dem gleichen Server in ein anderes Verzeichnis verschieben/ umbenennen.
Auch das Anlegen einer .nrf lässt sich damit erledigen. ( nein, dass kann die Funktion nicht )

Habe ich momentan nicht zur Hand, und ist, soweit ich weiss auch undokumentiert.
Ich kann das aber mal zusammenstellem (nach dem Wochenende)


ist seit R4 vorhanden und wurde in R5 in die API aufgenommen.

STATUS LNPUBLIC NSFDbRename (const char far *from, const char far *to);
« Letzte Änderung: 11.06.16 - 07:56:35 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Datenbank per Script verschieben
« Antwort #3 am: 10.06.16 - 20:50:01 »
ist auch DAOS save
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Datenbank per Script verschieben
« Antwort #4 am: 10.06.16 - 20:57:42 »
http://www-12.lotus.com/ldd/doc/tools/c/6.0.2/api60ref.nsf/0/0C012179ED1A0BDE85256C6B00740197?OpenDocument

Das kann man sehr leicht in LS umsetzten.

Man kann sich auch sehr schön eine DLL / .so bauen, die die nicht von der IBM veröffentlichten Funktionen nach LS. / Java exposed. Wenn man es kann ..

Documentiert/Undocumentiert. Schert mich einen Dreck. Habe mit IBM dev folk gesprochen. Die verwenden das Zeugs. Gür die gibt es diese Diskussion gar. nicht
« Letzte Änderung: 10.06.16 - 21:09:02 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Datenbank per Script verschieben
« Antwort #5 am: 10.06.16 - 21:42:36 »
Documentiert/Undocumentiert. Schert mich einen Dreck. Habe mit IBM dev folk gesprochen. Die verwenden das Zeugs. Gür die gibt es diese Diskussion gar. nicht
Es kann ja sein, dass man kleine unangenehme Erlebnisse ausblendet nach einer Weile: Aber ist das überhaupt schon mal schief gegangen? vor x Jahren schrillten bei mir auch die Alarmglocken, wenn etwas funktionierte, wovon die Dokus nichts erwähnten (und bei anderen Produkten - fast immer bestätigt - tut es das auch heute noch), aber bei Notes / Domino Stuff gilt ja die Nutzung durch IBM-Spezis selbst schon als nachgewiesene und stabile Beglaubigung.

Bernhard

Offline Pyewacket

  • Senior Mitglied
  • ****
  • Beiträge: 310
  • Geschlecht: Männlich
Re: Datenbank per Script verschieben
« Antwort #6 am: 10.06.16 - 23:20:41 »
Das NSFDbRename funktioniert gut. Man kann damit auch vom Client
aus Datenbanken auf dem Server verschieben. Quelle und Ziel muss jeweils im
Format Servername!!Filepath angegeben werden wobei Servername bei Quelle und Ziel identisch sein muss.
Wenn man als Ziel beim Verzeichnis ein führendes \ angibt kann die DB aus Notesdata rausgeschoben werden,
der Server kennt sie danach nicht mehr.
Einschränkungen sind mir bisher drei aufgefallen:
- Die DB darf nicht im Zugriff sein, eventuell ein paar mal probieren.
- Das Zielverzeichnis muss bereits existieren
- Man kann damit nicht Gross/Kleinschreibung (bei Unix relevant) korrigieren, das geht nur über einen Zwischenschritt mit anderem tempnamen.

Peter
« Letzte Änderung: 10.06.16 - 23:22:52 von Pyewacket »
ATOS.org - Feel the music!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Datenbank per Script verschieben
« Antwort #7 am: 11.06.16 - 07:43:05 »
Code
#### DECLARATIONS ####

Declare Function W32_NSFDbRename Lib "nnotes.dll" Alias "NSFDbRename" _
(Byval OldDatabase As String, _
Byval NewDatabase As String) As Integer

Declare Function W32_OSLoadString Lib "nnotes.dll" Alias "OSLoadString" _
(Byval hModule As Long, _
Byval StringCode As Integer, _
Byval retBuffer As String, _
Byval BufferLength As Integer) As Integer

#### SCRIPT CODE ####

Sub Initialize
 
 Dim iret As Integer
 Dim szError As String * 256
 Dim ErrorString As String
 Dim StrLen As Integer
 Dim nnServer As NotesName
 Dim oldDatabase As String
 Dim newDatabase As String
 
 Set nnServer = New NotesName("My Server/My Org")
 oldDatabase = "mailoldmailfile.nsf"
 newDatabase = "mailnewmailfile.nsf"
 
'if a server is not specified, then only parse the database information to the API function,
'not the server if a server is specified, then parse both the server and database to 
'the API function
 
 If nnServer.Canonical = "" Then
  iret = W32_NSFDbRename(oldDatabase, newDatabase)
 Else
  iret = W32_NSFDbRename(nnServer.Canonical & "!!" & oldDatabase, nnServer.Canonical & "!!" & newDatabase)
 End If
 
'If an error occurs, then convert and display the error number and error message
 
 If iret <> 0 Then
  ErrorString = ""
  szError = String$(256, 0)
  StrLen = W32_OSLoadString(0, iret, szError, 255)
  If Strlen <> 0 Then ErrorString = Left$(szError, StrLen)
  Msgbox "Error " & iret & " (" & ErrorString & ")",,"Lotus Notes Error"
 End If

End Sub
« Letzte Änderung: 11.06.16 - 07:46:16 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Datenbank per Script verschieben
« Antwort #8 am: 11.06.16 - 08:11:47 »
Zitat
- Man kann damit nicht Gross/Kleinschreibung (bei Unix relevant) korrigieren, das geht nur über einen Zwischenschritt mit anderem tempnamen.

Du musst doch nur den lower-case name als target angeben.

Zumindest sehe ich in meiner BCC DbTool Implementierung nichts anderes.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Pyewacket

  • Senior Mitglied
  • ****
  • Beiträge: 310
  • Geschlecht: Männlich
Re: Datenbank per Script verschieben
« Antwort #9 am: 11.06.16 - 10:17:34 »
Es ist schon eine Weile her daß ich damit rumgespielt hab und inzwischen
haben wir kein Domino auf Unix (AIX) mehr.
Soweit ich mich erinnere hat das direkte Rename nur dann funktioniert wenn
die Quelldatenbank seit dem Serverstart noch nicht geöffnet war.

Beim ersten Öffnen eine DB auf Unix muss die Groß/Kleinschreibung genau so sein
wie im Filesystem, ansonsten wird die DB nicht gefunden. Nachdem die DB geöffnet war
ist bei weiteren Versuchen die DB zu öffnen egal welche Schreibweise verwendet wird.
Anscheinend schaut Domino beim dbopen erst im Speicher nach ob dieses File schon offen
ist und dieser Vergleich ist case-insensitive.
 

ATOS.org - Feel the music!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Datenbank per Script verschieben
« Antwort #10 am: 14.06.16 - 08:34:55 »
Immer wieder schön zu lesen, daß sich Leute hier Mühe geben, eine Frage zu beantworten und dann tagelang keine Rückmeldung vom Fragesteller kommt.

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline MacSpudik

  • Aktives Mitglied
  • ***
  • Beiträge: 211
  • Geschlecht: Männlich
Re: Datenbank per Script verschieben
« Antwort #11 am: 15.06.16 - 13:40:45 »
Ich bin zwar nicht der Fragesteller, aber die Lösung finde ich super. Danke fürs Posten!

Es hätte mir viel Arbeit erspart, wenn ich einen Tag früher drüber gestolpert wäre. Wie das immer so ist, habe ich heute aus Zufall den Thread gelesen.
Zumindest werde ich das Script für die Zukunft in meine Admintools implementieren und vor allem sollte man sich wirklich angewöhnen, hier im Forum nach Lösungen zu suchen, bevor man etwas anfängt  :)
Das spart ne Menge Arbeit   8)

Grüße von
Sebastian
"Es ist schwierig zu antworten, wenn man die Frage nicht versteht."

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz