SQL 2005:代理作业步骤输出文件命名

时间:2009-01-23 10:24:37

标签: sql-server

有没有人知道,如果有办法在SQL Server喜欢的文件路径中指定“这台机器”?

我有一个代理作业,我想在我的所有服务器上编写脚本。它输出到本地机器上的文件,所以我想将文件名脚本为

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

另一个原因是我计划使用日志传送进行灾难恢复,我希望这些作业能够在运行的服务器上运行。该脚本将作业设置为正常,但是当我运行该作业时,我收到错误“无法打开步骤输出文件”。我想我已经取消了共享和文件夹权限:它适用于C:\<folder-name>\<file-name>

3 个答案:

答案 0 :(得分:1)

你试过@@ SERVERNAME吗?

SELECT @@SERVERNAME

或者你可以使用它,如果有多个SQl服务器运行实例,你可以使用第二个

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

答案 1 :(得分: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))

答案 2 :(得分:0)

将文件夹放在所有计算机上的相同位置。

C:\ SharedSQLLogFiles .....

如果您不希望它们位于同一位置,请创建指向实际位置的Junction C:\ SharedSQLLogFiles。

通过这种方式,您可以简单地将文件位置编写为本地路径,但仍然可以从远程共享访问该文件。

干杯,本