2013-03-12 1 views
0

У меня есть процедура, которая копирует данные из таблицы клиентов в таблицу истории.Выполнение процедуры в определенный день в Express Edition

Как я могу сделать это автоматически без привлечения кнопки пользователя каждый месяц в определенный конкретный день?

Я использую SQL Server 2008 Express Edition, поэтому я не могу планировать задание с помощью агента SQL Server.

ответ

1

Поскольку вы используете SQL Express, вы не можете использовать агент SQL Server. Однако есть много альтернатив, все из которых вы можете запланировать с помощью schtasks или Windows Task Scheduler в зависимости от вашей операционной системы:

Все эти языки/инструменты (и многие другие) имеют возможность подключения к SQL Server и выполнения или. Вы также можете попробовать эти замены агента:

Вот пример использования VBScript:

  1. Открыть Блокнот. Введите следующий код, заменив $ лексемы $ с реальными значениями:

    s = "$your server/instance name$" 
    db = "$your database name$" 
    u = "$your SQL auth user ID$" 
    p = "$your SQL auth password$" 
    constr = "provider=SQLOLEDB;Data Source=" & s & ";Initial Catalog=" & s & _ 
         ";User ID=" & u & ";Password=" & p & ";Network=DBMSSOCN;" 
    Set conn = CreateObject("ADODB.Connection") 
    conn.Open constr 
    conn.Execute "EXEC dbo.$your procedure name$;" 
    conn.close: set conn = nothing 
    
  2. Сохранить этот файл как c:\somewhere\ScheduledProcedure.vbs

  3. Откройте командную строку и введите следующую команду (это будет планировать этот скрипт для запуска на 15-го числа каждого месяца в полночь), все в одной строке:

    schtasks /create /tn "some name" 
        /tr "wscript ""c:\somewhere\ScheduledProcedure.vbs""" 
        /sc monthly /d 15 /st 00:00 
    

Чтобы увидеть эту задачу в списке запланированных задач (есть много, но это должно быть в первой группе):

schtasks /query 

Если позже вы хотите удалить его:

schtasks /delete /tn "some name" /F 
+0

Thanx! будет искать что-то, что я знаю. В Visual Studio есть что-то вроде таймера, но не уверен, что он будет работать с asp.net. – Andrey

+0

@ Andrey, что же это связано с asp.net? Если все, что вы пытаетесь сделать, это выполнить хранимую процедуру по расписанию, тот факт, что asp.net также использует эту базу данных в значительной степени неактуальной. –

+0

У меня есть БД и что Db подключается к веб-сайту, написанному на ASP.Net, поэтому я думаю, что могу вызвать эту процедуру с сайта .Net с помощью таймера. – Andrey

1

В SQL Express это невозможно - вам нужно будет написать программу, которая делает это, тогда вы можете использовать планировщик задач Windows для выполнения программы. В более высоких версиях SQL-сервера используется агент SQL Server, который вы можете запускать для себя.

+0

Thanx! будет искать что-то – Andrey