2009-01-23 3 views
0

Кто-нибудь знает, пожалуйста, если есть способ указать «этот компьютер» в пути к файлу, который понравится SQL Server?SQL 2005: Идентификатор файла задания агента

У меня есть задание агента Я хочу, чтобы скрипт на всех моих серверах. Он выводит в файл на локальном компьютере, так что я хочу, чтобы сценарий имя файла, как

\\localhost\<shared-folder-name>\<file-name> 

Другая причина я планирую использовать доставку журналов для аварийного восстановления, и я хочу работу, чтобы работать так же, в зависимости от того сервера они работают. Сценарий устанавливает задание в порядке, но когда я запускаю задание, я получаю сообщение об ошибке «Невозможно открыть выходной файл Step». Я думаю, что я исключил права доступа к общим папкам и папкам: он отлично работает с C:\<folder-name>\<file-name>.

ответ

1

Вы пробовали @@ SERVERNAME?

SELECT @@SERVERNAME 

Или вы можете использовать это, второй, который вы можете использовать, если у вас есть несколько экземпляров SQL Server, работает

SELECT serverproperty('MachineName'),serverproperty('Instancename') 
+0

Спасибо, Menace, но проблема в том, что я говорю о выходе результатов файла шаг задания, что вы указали в Management Studio. Кроме того, я хочу, чтобы строка была одинаковой на всех серверах, если я должен переступить на мой резервный сервер. –

0

Когда сценарий его Вы можете использовать параметр @output_file_name

EXECUTE msdb.dbo.sp_add_jobstep @job_name = @JobName01, @step_name = @JobName01, 
@subsystem = 'CMDEXEC', @command = @JobCommand01, @output_file_name = @OutputFile 

Чтобы установить имя выходного журнала, мы можем сделать

SET @OutputFile = @LogDirectory + '\SQLAGENT_JOB_$(ESCAPE_SQUOTE(JOBID))_$(ESCAPE_SQUOTE(STEPID))_$(ESCAPE_SQUOTE(STRTDT))_$(ESCAPE_SQUOTE(STRTTM)).txt' 

To get the server name 
$(ESCAPE_SQUOTE(SRVR)) 
+0

Не работает :-( – Faiz

0

Поместите папку в одно и то же место на всех машинах.

C: \ SharedSQLLogFiles .....

Если вы не хотите, чтобы они в том же месте, создать Junction C: \ SharedSQLLogFiles указывая на фактическое место.

Таким образом, вы можете просто скопировать местоположение файла как локальный путь, но все же сможете получить доступ к файлу из удаленного доступа.

Cheers, Бен

Смежные вопросы