Jak tworzyć zadania w wersji SQL Server Express

82

Czy ktoś mógłby mi wyjaśnić, jak tworzyć prace w SQL Server Expressedycji?

Perła
źródło
6
Jeśli odnosisz się do zadań agenta SQL, ta funkcja nie jest dostępna w wersji Express. Zobacz odpowiedź na to pytanie, aby poznać inne możliwości: stackoverflow.com/questions/3788583/…
8kb
Wersja Express obsługuje brokera SQL Server i możesz stworzyć własny mechanizm taki jak tutaj
Łukasz Szozda

Odpowiedzi:

123

SQL Server Express nie zawiera agenta SQL Server , więc nie można po prostu tworzyć zadań SQL Agent.

Co możesz zrobić:
Możesz tworzyć zadania „ręcznie”, tworząc pliki wsadowe i pliki skryptów SQL oraz uruchamiając je za pomocą Harmonogramu zadań systemu Windows.
Na przykład możesz wykonać kopię zapasową bazy danych za pomocą dwóch plików, takich jak ten:

backup.bat:

sqlcmd -i backup.sql

backup.sql:

backup database TeamCity to disk = 'c:\backups\MyBackup.bak'

Po prostu umieść oba pliki w tym samym folderze i uruchom plik wsadowy za pomocą Harmonogramu zadań systemu Windows.

Pierwszy plik to po prostu plik wsadowy systemu Windows, który wywołuje narzędzie sqlcmd i przekazuje plik skryptu SQL.
Plik skryptu SQL zawiera język T-SQL. W moim przykładzie jest to tylko jeden wiersz na kopię zapasową bazy danych, ale można w nim umieścić dowolny T-SQL. Na przykład możesz UPDATEzamiast tego wykonać kilka zapytań.


Jeśli zadania, które chcesz utworzyć, dotyczą kopii zapasowych, konserwacji indeksów lub kontroli integralności, możesz również skorzystać z doskonałego rozwiązania Maintenance firmy Ola Hallengren.

Składa się z wielu procedur składowanych (i zadań agenta SQL dla wersji SQL Server innych niż Express), aw FAQ znajduje się sekcja o tym, jak uruchamiać zadania w SQL Server Express:

Jak rozpocząć korzystanie z rozwiązania do konserwacji programu SQL Server w programie SQL Server Express?

SQL Server Express nie ma agenta SQL Server. Dlatego wykonywanie procedur składowanych należy zaplanować przy użyciu plików cmd i zaplanowanych zadań systemu Windows. Wykonaj poniższe czynności.

SQL Server Express nie ma agenta SQL Server. Dlatego wykonywanie procedur składowanych należy zaplanować przy użyciu plików cmd i zaplanowanych zadań systemu Windows. Wykonaj poniższe czynności.

  1. Pobierz MaintenanceSolution.sql.

  2. Wykonaj MaintenanceSolution.sql. Ten skrypt tworzy potrzebne procedury składowane.

  3. Utwórz pliki cmd, aby wykonać procedury składowane; na przykład:
    sqlcmd -E -S. \ SQLEXPRESS -d master -Q "EXECUTE dbo.DatabaseBackup @Database = 'USER_DATABASES', @Directory = N'C: \ Backup ', @BackupType =' FULL '" -b -o C: \ Log \ DatabaseBackup.txt

  4. W Zaplanowanych zadaniach systemu Windows utwórz zadania wywołujące pliki cmd.

  5. Zaplanuj zadania.

  6. Rozpocznij zadania i sprawdź, czy zostały pomyślnie zakończone.

Christian Specht
źródło
1
Gdzie mam podać dane logowania?
HasanG
1
@ HasanGürsoy Jeśli tworzysz zaplanowane zadanie, które uruchamia SQLCMD (z lub bez pliku BAT), zalecałbym użycie parametru „-E” SQLCMD do uwierzytelniania systemu Windows. Aby to zadziałało, zdefiniuj login SQL Server dla użytkownika systemu Windows, który jest właścicielem zaplanowanego zadania systemu Windows. Jeśli nie jest jasne, w którym systemie Windows loguje się zadanie, wpisz „WHOAMI” (polecenie DOS) w pliku BAT i przechwyć wynik pliku BAT, aby zobaczyć, kto wykonuje.
Doug_Ivison
@ HasanGürsoy Lub, w przypadku uwierzytelniania SQL Server, umieszczałbym hasło w zaplanowanym zadaniu systemu Windows (gdzie uprawnienia decydują o tym, kto może je odczytać), zamiast umieszczać je w pliku w dowolnym miejscu. Przechodzi do wiersza poleceń pliku BAT. Jeśli jest to pierwszy parametr przekazywany do pliku BAT, to w pliku BAT możesz odnosić się do niego jako% 1, na przykład w wierszu SQLCMD.
Doug_Ivison
41

Funkcjonalność tworzenia zadań SQL Agent nie jest dostępna w SQL Server Express Edition. Alternatywą jest wykonanie pliku wsadowego, który wykonuje skrypt SQL za pomocą Harmonogramu zadań systemu Windows.

Aby to zrobić, najpierw utwórz plik wsadowy o nazwie sqljob.bat

sqlcmd -S servername -U username -P password -i <path of sqljob.sql>

Wymienić servername, username, passworda pathz naszą.

Następnie utwórz plik skryptu SQL o nazwie sqljob.sql

USE [databasename]
--T-SQL commands go here
GO

Zastąp nazwę [databasename]swojej bazy danych. Elementy USEi GOsą niezbędne podczas pisania skryptu SQL.

sqlcmdto narzędzie wiersza poleceń do wykonywania skryptów SQL. Po utworzeniu tych dwóch plików uruchom plik wsadowy za pomocą Harmonogramu zadań systemu Windows.

Uwaga: już wcześniej opublikowano prawie taką samą odpowiedź na to pytanie. Ale czułem, że jest niekompletny, ponieważ nie zawierał informacji o używaniu danych logowania sqlcmd.

geo
źródło
Gdzie mógłbym zapisać ten plik sqljob.sql? i jak mogę ustawić, kiedy to się wykona?
WTFZane
1
@WTFZane, nie ma to znaczenia, o ile lokalizacja jest dostępna dla każdego, kto wykonuje plik wsadowy. (w powyższym skrypcie zastąp path of sqljob.sqldowolną lokalizacją, której używasz). Pamiętaj, że *.sqlplik tutaj to nic innego jak plik tekstowy.
Abel