使用sql server专用接口的话,可以通过在dbparm中设置appname实现
但是使用oledb接口的话,则没有appname可设置,如何解决?

解决方案 »

  1.   

    你是想在SQLServer里面查program_name?
      

  2.   

    试试:表格自己建吧。不过这个在2008才能用
             SET NOCOUNT ON ;
             DECLARE @EventData XML = EVENTDATA() ;--返回有关服务器或数据库事件的信息,以XML格式保存。
             DECLARE @ip VARCHAR(32) = ( SELECT  client_net_address
                                         FROM    sys.dm_exec_connections
                                         WHERE   session_id = @@SPID 
                                       ) ;
      --记录所有操作到表中
             INSERT  AuditDB_DBA.dbo.DDLEvents
                     ( EventType ,
                       EventDDL ,
                       EventXML ,
                       DatabaseName ,
                       SchemaName ,
                       ObjectName ,
                       HostName ,
                       IPAddress ,
                       ProgramName ,
                       LoginName
                     )
                     SELECT  @EventData.value('(/EVENT_INSTANCE/EventType)[1]',
                                              'NVARCHAR(100)') ,
                             @EventData.value('(/EVENT_INSTANCE/TSQLCommand)[1]',
                                              'NVARCHAR(MAX)') ,
                             @EventData ,
                             DB_NAME() ,
                             @EventData.value('(/EVENT_INSTANCE/SchemaName)[1]',
                                              'NVARCHAR(255)') ,
                             @EventData.value('(/EVENT_INSTANCE/ObjectName)[1]',
                                              'NVARCHAR(255)') ,
                             HOST_NAME() ,
                             @ip ,
                             PROGRAM_NAME() ,
                             SUSER_SNAME() ;
                             
     
      

  3.   

    不是想查询,是想设置,比如你在客户端使用sql server的专用接口连接数据库时,在连接字符串dbparm中写入:appanem='app1'
    这样当连接成功后,你查询sysprocesses这个表(可能是该连接自己查询,也可能是其它连接通过指定的spid进行查询),会发现这个连接对应的记录中,program_name的值为app1但是在使用oledb接口时,由于dbparm中没有appname这个属性可用(设置了也无效),因此无法达到上述目标。
      

  4.   

    找了一圈,oledb接口貌似无解