Announcement

Collapse
No announcement yet.

aus Skripten heraus andere Skripte starten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • aus Skripten heraus andere Skripte starten

    Hallo zusammen,

    ich habe eine Frage bezüglich SQL-Skripten.
    Im Backend läuft eine MS-SQL 2000 Datenbank.

    Ich würde mir gerne ein Skript erstellen (.sql) aus welchem ich heraus weitere
    Skripte aufrufe.

    Beispiel:

    Script1.sql
    --start-----------------

    call Script2
    call Script3
    call Script4
    --ende-----------------

    Vielleicht hat ja von euch jemand eine Idee?!

    Liebe Grüße
    Thomas

  • #2
    Hallo,

    beim MS SQL Server 2005 ist das über den so genannten SQLCMD-Modus kein Problem, da dort über die :r-Anweisung externe SQL-Scripte ausgeführt werden können. Das folgende Beispiele zeigt einige der neuen Möglichkeiten:

    Code:
    :Setvar DBName "tempdb"
    :Setvar ScriptDir "C:\Buch\SQLServer2005\Source\SQLCMD"
    :On Error exit
    :Error C:\Temp\ScriptTestError.txt
    :Out C:\Temp\ScriptTestOutput.txt
    
    USE $(DBName)
    GO
    
    CREATE TABLE ScriptTest
    (
      id   INT         NOT NULL IDENTITY PRIMARY KEY,
      wert NVARCHAR(9) NOT NULL
    )
    INSERT INTO ScriptTest (wert) VALUES ('Script1a');
    GO
    
    :r $(ScriptDir)\Script2.sql
     
    INSERT INTO ScriptTest (wert) VALUES ('Script1b');
    GO
     
    SELECT * FROM ScriptTest
    GO
    
    DROP TABLE ScriptTest
    GO
    Beim MS SQL Server 2000 gibt es nur den Batch-Weg (über eine .CMD- oder .BAT-Datei), indem die Kommandozeilen-Tools wie osql.exe über den Schalter -i die auszuführende Scriptdatei festlegen. Das könnte dann so aussehen:

    Code:
    @echo off 
    REM: Command File Created by Microsoft Visual Database Tools 
    REM: Date Generated: 04.03.2005 
    REM: Authentication type: Windows NT 
    REM: Usage: CommandFilename [Server] [Database] 
    if '%1' == '' goto usage 
    if '%2' == '' goto usage 
    
    if '%1' == '/?' goto usage 
    if '%1' == '-?' goto usage 
    if '%1' == '?' goto usage 
    if '%1' == '/help' goto usage 
    
    osql -S %1 -E -b -i "CreateExternTable.sql" 
    if %ERRORLEVEL% NEQ 0 goto errors 
    
    bcp "%2.dbo.SD_BL" in "dbo.SD_BL.dat" -S %1 -T -k -n -q 
    if %ERRORLEVEL% NEQ 0 goto errors 
    ...

    Comment


    • #3
      Hallo Andreas,
      ich danke dir sehr für deine Hilfe. Es hat mit ein bisschen testen wunderbar
      funktioniert!!

      Vor allem die Info, dass es unter msSQL Server 2000 nur mit "Umwegen"
      möglich ist, spart mir weitere Suchaktionen.

      Liebe Grüsse,
      Thomas

      Comment

      Working...
      X