例如
mssql2005中的D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG
mssql2000中的C:\Program Files\Microsoft SQL Server\MSSQL\LOG

解决方案 »

  1.   

    --sql 2000
    use masterselect filename from sysaltfiles
      

  2.   

    这个查的是数据库的路径.不是当前实例的log目录位置.
      

  3.   

    SELECT * FROM sys.database_files
      

  4.   

    谢谢大家的意见,我看目前大家都是提供查询当前实例数据库文件的路径。如果采用先查当前实例的数据库文件路径后再回退2层目录,进入log目录。用这种方案来找到LOG目录的话,有个问题,那就是数据库文件的存放路径是可以改的,它可能不再默认位置,那我得到的LOG目录就不正确了。有没有更直接的方法可以找到LOG目录啊,谢谢!
      

  5.   

    谢谢大家的意见,我看目前大家都是提供查询当前实例数据库文件的路径。如果采用先查当前实例的数据库文件路径后再回退2层目录,进入log目录。用这种方案来找到LOG目录的话,有个问题,那就是数据库文件的存放路径是可以改的,它可能不再默认位置,那我得到的LOG目录就不正确了。有没有更直接的方法可以找到LOG目录啊,谢谢!
      

  6.   


    ----------mssql2005默认实例的安装路径---------------
    DECLARE
        @re varchar(260);
    EXEC master.sys.xp_regread
        N'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Setup',
        N'SQLPath',
        @re OUTPUT
    SELECT @re;----------mssql2000默认实例的安装路径---------------
    DECLARE
        @re varchar(260);
    EXEC master.dbo.xp_regread
        N'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\MSSQLServer\Setup',
        N'SQLPath',
        @re OUTPUT
    SELECT @re;找了2个通过查注册表的方法来获得数据库安装路径的方法,和大家一起分享下。
    用这个目录增加一层LOG就获得了我要的目录了,初步准备这样实现了,不知道有没有隐藏问题。
      

  7.   

    SELECT * FROM sys.database_files where type_desc='LOG'
      

  8.   

    你好,我说的日志文件是D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG目录下的ERRORLOG文件,不是*.ldf文件。ERRORLOG文件的存放路径也可以改吗?
      

  9.   

    你好,BCP可以实现吗?能具体说下吗,谢谢。
      

  10.   


    ----------mssql2005默认实例的LOG目录路径---------------
    DECLARE
        @re varchar(260);
    EXEC master.sys.xp_regread
        N'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\CPE',
        N'ErrorDumpDir',
        @re OUTPUT
    SELECT @re;输出:D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\
    ----------mssql2000默认实例的ERRORLOG路径---------------
    DECLARE
        @re varchar(260);
    EXEC master.dbo.xp_regread
        N'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\Parameters',
        N'SQLArg1',
        @re OUTPUT
    SELECT @re;输出:-eC:\Program Files\Microsoft SQL Server\MSSQL\log\ERRORLOG改进了下通过注册表获得LOG目录的方式。
      

  11.   

    访问注册表的扩展存储过程并不是所有的系统都能用的,尤其是对安全要求
    较高的系统。如果是SQL Server 2000之后的版本。可以用下面的方法:
    SELECT LEFT(name,LEN(name) - 17) + N'LOG' 
    FROM sys.dm_os_loaded_modules
    WHERE description = N'SQL Server Windows NT'
      

  12.   

    mssql2000有没有类似的方法呢?通过查找系统表或视图的方式