1

我最近在我们的新虚拟服务器上的 SQL 中设置并运行了一些跟踪和扩展事件,以显示用户对每个数据库的访问权限以及他们最近是否登录,并将文件设置为保存为物理文件服务器而不是写入 SQL 表来节省资源。我已将跟踪设置为每天早上 8 点运行的作业,延迟 12 小时,以便我们可以记录尽可能多的信息。

理想情况下,我们的 IT 部门除了虚拟服务器 C 驱动器上的操作系统之外不想要任何东西,所以我希望能够将我的 SQL 脚本中的跟踪写入不同的分区或完全写入另一台服务器。

我试图在我的代码中插入到不同服务器的直接路径,并输入了与 C 不同的分区,但是除非我将跟踪/扩展事件文件写入 C 驱动器,否则我会收到一条错误消息。

CREATE EVENT SESSION [LoginTraceTest] ON SERVER    
ADD EVENT sqlserver.existing_connection(SET collect_database_name= 
(1),collect_options_text=(1)      
ACTION(package0.event_sequence,sqlos.task_time,sqlserver.client_pid,
sqlserver.database_id,sqlserver.
database_name,sqlserver.is_system,sqlserver.nt_username,sqlserver.request_id,sqlserver.server_principal_sid,sqlserver.session_id,sqlserver.session_nt_username,
sqlserver.sql_text,sqlserver.username)),  
ADD EVENT sqlserver.login(SET collect_database_name= 
(1),collect_options_text=(1)      
ACTION(package0.event_sequence,sqlos.task_time,sqlserver.client_pid,sqlserver.database_id,sqlserver.database_name,sqlserver.is_system,sqlserver.nt_username,sqlserver.request_id,sqlserver.server_principal_sid,sqlserver.session_id,sqlserver.
session_nt_username,sqlserver.sql_text,sqlserver.username)      )   
ADD TARGET package0.asynchronous_file_target    (      
SET FILENAME = N'\\SERVER1\testFolder\LoginTrace.xel',      
METADATAFILE = N'\\SERVER1\testFolder\LoginTrace.xem'      );     

我收到的错误是这样的:

Msg 25641, Level 16, State 0, Line 6 For target, "package0.asynchronous_file_target", the parameter "filename" passed is invalid. Target parameter at index 0 is invalid

如果我将其更改为另一个分区而不是不同的服务器:

SET FILENAME = N'D:\Traces\LoginTrace\LoginTrace.xel',      
METADATAFILE = N'D:\Traces\LoginTrace\LoginTrace.xem'      );        

SQL Server 声明命令成功完成,但文件未写入分区。

关于如何将文件写入另一个分区或服务器的任何想法?

4

0 回答 0