none
.sql - Datei aus .sql-Datei starten? RRS feed

  • Frage

  • Hi,

    ich möchte eine .sql-Datei aus einer .sql Datei laden und start.

    Geht das?

    (SQLCMD und Batch sind mir bekannt)

    ... leider hab ich noch SQL - Server 2000

    Gruß Michael

     

    Montag, 30. Mai 2011 14:29

Antworten

  • Hallo Michael,

    Nein, anders herum. Man kann in einem SQL Script für SqlCmd weitere SQL Script zur Ausführung aufrufen; das war doch auch, wonach Du gefragt hattest, oder?

    Das folgende Beispiel führt je ein einfaches SQL Statement aus und ruft dann über das :r Kommando eine andere SQL Script Datei auf und führt diese aus.

    SELECT @@version;

     

    :r D:\Test1.sql

     

    SELECT GetDate();

     

    :r D:\Test2.sql

     


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing
    • Als Antwort markiert mimuel Donnerstag, 9. Juni 2011 07:41
    Dienstag, 31. Mai 2011 06:53

Alle Antworten

  • Hallo Michael,

    auch wenn Du den SQL Server 2000 verwendest, SqlCmd kannst & darfst Du trotzdem verwenden und dort geht es, ander SQL Script Dateien aufzurufen.
    Sonst ist mir keine andere Möglichkeit bekannt; ausser sich selbst etwas zu programmieren.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing
    Montag, 30. Mai 2011 14:38
  • Hallo Olaf,

     

    hab ich das richtig verstanden:

    Ich kann SQLCMD in einer sql-Datei aufrufen?

    Dienstag, 31. Mai 2011 06:14
  • Hallo Michael,

    Nein, anders herum. Man kann in einem SQL Script für SqlCmd weitere SQL Script zur Ausführung aufrufen; das war doch auch, wonach Du gefragt hattest, oder?

    Das folgende Beispiel führt je ein einfaches SQL Statement aus und ruft dann über das :r Kommando eine andere SQL Script Datei auf und führt diese aus.

    SELECT @@version;

     

    :r D:\Test1.sql

     

    SELECT GetDate();

     

    :r D:\Test2.sql

     


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing
    • Als Antwort markiert mimuel Donnerstag, 9. Juni 2011 07:41
    Dienstag, 31. Mai 2011 06:53
  • Hallo Olaf,

    jetzt ist die Verwirrung perfekt!

    Ich befinde mich im SQL Server Management Studio. (SQL Server 2000)

    Das Kommando :r ist nicht bekannt.

    liegt das an SQL Server 2000, istdie Syntax falsch oder woran liegts?

    Was ist der eigentliche Hintergrund?

    Ich möchte nur SQL-Scripts in Abhängigkeit von Bedingungen starten.

    Gruß Michael

    Dienstag, 31. Mai 2011 07:57
  • Hallo mimuel,

    was Du vermutlich suchst ist der Befehl xp_cmdshell. Mit diesem kannst Du dann aus einem Script heraus weiter Programme aufrufen. Z.B. auch sqlcmd mit dem dann entsprechenden Scripten.

    http://msdn.microsoft.com/de-de/library/ms175046.aspx

    Versuch es so einmal:

    xp_cmdshell 'sqlcmd -U user -P password -S myServer\instanceName -i C:\myScript.sql'

     


    Gruß Falk
    Dienstag, 31. Mai 2011 08:16
  • Hallo Michael,

    wenn Du wirklich mit dem SSMS = SQL Server Management Studio arbeitest (bei 2000 ist der Query Analyzer Standard), dann kannst Du übers Menü "Abfrage" => "SQLCMD Modus" in den SqlCmd Modus umschalten; dann kennt SSMS auch das :r Kommando.

    Ansonsten kannst Du das Script, das Du erstellt hast oder noch wirst auch von SqlCmd ausführen lassen; über den Startparameter -i kannst Du die Script Datei angeben, siehe http://msdn.microsoft.com/de-de/library/ms162773.aspx

     


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing
    Dienstag, 31. Mai 2011 08:22
  • Hallo Falk,

    das wäre eine Lösung um Scripts auszuführen in Abhängigkeit von Bedingungen.

    Leider gibt's das Kommando erst ab SQL Server 2005.

    Trotzdem danke.

     

     

    Dienstag, 31. Mai 2011 08:33
  • Hallo mimuel,

    bist Du Dir da sicher. Ich meine mich zu erinnern das dies auch unter SQL 2000 schon ging. Leider habe ich so ein Installation momentan nicht zur Verfügung um dies überprüfen zu konnen.

     

    P.S.: Vermutlich hast Du dies verwechselt mit der  ab SQL 2005 veränderten Sicherheitseinstellung. Ab dieser Version ist es so das dieser Befehl standardmäßig deaktiviert ist und erst expliziet aktiviert werden muss, um ihn nutzen zu können.


    Gruß Falk
    • Bearbeitet Falk Krahl Dienstag, 31. Mai 2011 10:16
    Dienstag, 31. Mai 2011 09:19
  • Hallo Falk,

    Du hast recht. Das gibt's auch schon unter SQL Server 2000. Aus der MS-Knowledgebase:

    "The xp_cmdshell extended stored procedure invokes a Windows command shell from within Microsoft SQL Server 2000"

    How to enable non-sysadmin accounts to execute the "xp_cmdshell" extended stored procedure in SQL Server 2000
    http://support.microsoft.com/kb/890775/en-us

    Gruß
    Marcel

    Dienstag, 31. Mai 2011 09:28
  • Schau mal, ob diese beiden Threads dir weiterhelfen:

    http://social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/868c0548-5a55-4e21-8dbd-5a5846f82cd2/

    http://social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/7908c4c7-68d0-4776-9953-78bd76e03dfc


    -- Frank Kalis Microsoft SQL Server MVP Webmaster: http://www.insidesql.org
    Mittwoch, 1. Juni 2011 11:18
  • Hallo,

    haben die Tipps Dir weitergeholfen?

    Gruss,
    Raul

    Montag, 6. Juni 2011 09:32