有没有人知道,如果有办法在SQL Server喜欢的文件路径中指定“这台机器”?
我有一个代理作业,我想在我的所有服务器上编写脚本。它输出到本地机器上的文件,所以我想将文件名脚本为
\\localhost\<shared-folder-name>\<file-name>
另一个原因是我计划使用日志传送进行灾难恢复,我希望这些作业能够在运行的服务器上运行。该脚本将作业设置为正常,但是当我运行该作业时,我收到错误“无法打开步骤输出文件”。我想我已经取消了共享和文件夹权限:它适用于C:\<folder-name>\<file-name>
。
答案 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。
通过这种方式,您可以简单地将文件位置编写为本地路径,但仍然可以从远程共享访问该文件。
干杯,本