• Krishna1 (4/9/2013)


    DECLARE @filename NVARCHAR(1000);

    DECLARE @bc INT;

    DECLARE @ec INT;

    DECLARE @bfn VARCHAR(1000);

    DECLARE @efn VARCHAR(10);

    -- Get the name of the current default trace

    SELECT @filename = CAST(value AS NVARCHAR(1000))

    FROM ::fn_trace_getinfo(DEFAULT)

    WHERE traceid = 1 AND property = 2;

    -- rip apart file name into pieces

    SET @filename = REVERSE(@filename);

    SET @bc = CHARINDEX('.',@filename);

    SET @ec = CHARINDEX('_',@filename)+1;

    SET @efn = REVERSE(SUBSTRING(@filename,1,@bc));

    SET @bfn = REVERSE(SUBSTRING(@filename,@ec,LEN(@filename)));

    [/code]

    If all you want is the path, this is easier

    select reverse(substring(@filename, CHARINDEX('\', @filename, 0) + 1, LEN(@filename)))

    c:\Program Files\Microsoft SQL Server\MSSQL10_50.LOCAL2008EXPRESS\MSSQL\Log

    Or

    select reverse(substring(@filename, CHARINDEX('\', @filename, 0), LEN(@filename)))

    c:\Program Files\Microsoft SQL Server\MSSQL10_50.LOCAL2008EXPRESS\MSSQL\Log\

    -----------------------------------------------------------------------------------------------------------

    "Ya can't make an omelette without breaking just a few eggs" 😉