Erstellen Sie SQL Server-job automatisch
Schreibe ich SQL Server deployment-Skripte, die Erstellung von SQL-Server-job, der automatisch auf eine bestimmte SQL Server-Server/Instanz. Ich habe festgestellt, dass ich zu extrahieren, können Sie die sql-Anweisung, die verwendet werden können zum erstellen von SQL Server-Auftrag automatisch über ein Skript job als => Erstellen.
Meine Verwirrung ist, finde ich den Datenbanknamen und-Besitzer-account-Namen sind hardcoded in den sql-Skripts generiert. Wenn ich mit sqlcmd zum ausführen des sql-scripts auf einem anderen computer ausführen, die Bereitstellung, den Datenbanknamen und-Besitzer-account-Namen können unterschiedlich sein, also brauche ich einen Weg, um pass den Datenbanknamen und-Besitzer-account-Namen der SQL Server-Schaffung von Arbeitsplätzen-Skript und das Skript verwenden Sie das mitgelieferte Datenbank Namen und einen Besitzer-account-name (andere als hart kodiert sind).
Irgendwelche Ideen, wie das zu tun?
InformationsquelleAutor George2 | 2009-08-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Würden Sie brauchen, um dynamisch erstellen, das job-Skript und führen Sie es.
Sie könnten versuchen, so etwas wie die folgenden ändern oder diese an eine gespeicherte Prozedur mit Parameter für die job-Besitzer und Datenbank-Namen.
Hoffentlich wird dies Sie gehen in die richtige Richtung. Wenn Sie weitere Hilfe benötigen lass es mich wissen.
Ich habe eine Verwandte Frage ist hier, begrüßen, wenn Sie könnten, take ein Aussehen, stackoverflow.com/questions/1219067/...
Sie könnten fast alles machen Sie wollen variable. Sie könnte beginnen mit der Job-Name, Beschreibung und Kategorie. Es ist wirklich bis zu Ihnen und was Sie verwenden es für. Ich habe ein paar der Schaffung von Arbeitsplätzen-Skripte für das anlegen/starten/stoppen Spuren, die ich benutze. Es ist bis zu dir und wie viel mal Sie wollen.
Vielen Dank, ich habe eine Frage hier, zu schätzen wissen, wenn Sie helfen könnten. stackoverflow.com/questions/1219067/...
Ich bin wirklich verblüfft über die Lösung oben. Warum würden Sie dies tun, setzen Sie alle Codes in dynamische SQL-während alles, was Sie tun müssen, ist, übergeben Sie einfach die variable in der msdb-Verfahren ??? Eine IMHO logischer Skript unten... ich meine, das ist, was die Parameter sind, nicht ?
InformationsquelleAutor BrianD
Am Beispiel von BrainD ich möchte darauf hinweisen, dass seine Idee der Verwendung von Variablen ist nur in Ordnung, jedoch, indem Sie die gespeicherten Prozeduren mithilfe von dynamische SQL die meisten ist sicherlich nicht der richtige Ansatz. Verwenden Sie stattdessen die Parameter der gespeicherten Prozeduren direkt übergeben Sie die Variablen direkt an, wo Sie gebraucht werden.
InformationsquelleAutor deroby
Weiter zu BrianD die Antwort von oben, können Sie Variablen definieren (eigentlich mehr wie Präprozessor-Makros als Variablen) an der sqlcmd-Ebene; diese sind in Klammern mit einem führenden $ - Zeichen:
Dies ermöglicht Ihnen, übergeben Sie die Informationen auf der Befehlszeile, die von sqlcmd mit der-v-Schalter:
Ich habe eine Verwandte Frage ist hier, begrüßen, wenn Sie könnten, take ein Aussehen, stackoverflow.com/questions/1219067/...
InformationsquelleAutor Ken Keenan
Ich kam auf das gleiche problem heute, und wie ich das angehen, es ist so einfach
Die folgenden
Erstellen Sie eine gespeicherte Prozedur erstellt den Auftrag mit dem parameter @serverName vom Datentyp nvarchar(128)
Nun einfach, Sie können die server-Namen unter Verwendung der folgenden
Führen Sie die gespeicherte Prozedur zu erstellen, die Ihren job
Dass ist es.
Ich bin mit visual studio db-Projekt und ich habe die Schritte 2 und 3 int der postdeployment-Skript
Damit erstellen Sie die gespeicherte Prozedur, nur um den sql Management studio, und erstellen Sie eine sql-Auftrag. Dann Mach Rechte Maustaste auf den job, den Sie gerade erstellt haben und machen Sie ein Drop und Create, dann Sie können ändern Sie das Skript so erstellt.
Danke, aber was ich meinte, es ist am besten, alle relevanten Informationen in Ihre Antwort. Sie können Sie Bearbeiten, usw.
InformationsquelleAutor Dan Hunex
Selbst ich hab es besser ...Erstellen Sie eine gespeicherte Prozedur ohne parameter und innerhalb der stored proc machen :
Dann zuweisen @servername-der ServerName-parameter von sp_add_jobserver wie in unten:
In order to create gespeicherte Prozedur, die erstellt eine sql-Auftrag, legen Sie es zunächst mit dem sql management studio, und dann mit der rechten Maustaste auf den job und tun, löschen und Erstellen....
InformationsquelleAutor Dan Hunex