Server DateTime [SQL Server]

18. August 2007 12:00

Hallo zusammen!

Nun, eine relativ häufig gestellte Frage ist "Ob/Wie man Datum & Zeit des DB-Servers erhalten kann".
Bisher konnte man dies nur bewerkstelligen, indem man z.B. via NET TIME Befehl den Client mit dem Server synchronisiert (und mit "native" bleibt das auch die einzige Möglichkeit).

Mit SQL Server geht's nun doch ein wenig eleganter!
(Die folgende Lösung habe ich in MIBUSO gefunden, hier nur die "optimierte" Version :wink: )

1. In der NAV DB wird ein "View" erzeugt, der auf die SQL Server Systemfunktion GETUTCDATE zurückgreift:

Code:
CREATE VIEW dbo.[Server DateTime]
AS
SELECT '' AS [Primary Key], GETUTCDATE() AS [Server DateTime]
GO

GRANT SELECT ON [Server DateTime] TO [public]
GO


2. In NAV via "Object Designer" eine "Linked Table" für diesen "View" erstellen:

Code:
OBJECT Table 50000 Server DateTime
{
  OBJECT-PROPERTIES
  {
    Date=18.08.07;
    Time=12:00:00;
    Modified=Yes;
    Version List=SDT1.00;
  }
  PROPERTIES
  {
    DataPerCompany=No;
    LinkedObject=Yes;
    LinkedInTransaction=No;
  }
  FIELDS
  {
    { 1   ;   ;Primary Key         ;Code10         }
    { 2   ;   ;Server DateTime     ;DateTime       }
  }
  KEYS
  {
    {    ;Primary Key                             ;Clustered=Yes }
  }
  CODE
  {

    BEGIN
    END.
  }
}


3. Nun kann man diese Tabelle überall da wo man's braucht einbinden und mit blossem GET das Server Datum & Zeit lesen:

Code:
OBJECT Codeunit 50000 SDT Test
{
  OBJECT-PROPERTIES
  {
    Date=18.08.07;
    Time=12:00:00;
    Modified=Yes;
    Version List=SDT1.00;
  }
  PROPERTIES
  {
    OnRun=BEGIN
            SDT.GET;
            MESSAGE('%1', SDT."Server DateTime");
          END;

  }
  CODE
  {
    VAR
      SDT@1000000000 : Record 50000;

    BEGIN
    END.
  }
}


Viel Spass damit!