请教如何通过sql语句查找当前实例的log目录位置?

时间:2021-10-01 14:42:32
例如
mssql2005中的D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG
mssql2000中的C:\Program Files\Microsoft SQL Server\MSSQL\LOG

15 个解决方案

#1


查数据库的物理路径

#2


--sql 2000
use master

select filename from sysaltfiles

#3


引用 2 楼 dawugui 的回复:
--sql 2000
use master

select filename from sysaltfiles

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

#4


BCP?

#5


SELECT * FROM sys.database_files

#6


谢谢大家的意见,我看目前大家都是提供查询当前实例数据库文件的路径。

如果采用先查当前实例的数据库文件路径后再回退2层目录,进入log目录。

用这种方案来找到LOG目录的话,有个问题,那就是数据库文件的存放路径是可以改的,它可能不再默认位置,那我得到的LOG目录就不正确了。

有没有更直接的方法可以找到LOG目录啊,谢谢!

#7


谢谢大家的意见,我看目前大家都是提供查询当前实例数据库文件的路径。

如果采用先查当前实例的数据库文件路径后再回退2层目录,进入log目录。

用这种方案来找到LOG目录的话,有个问题,那就是数据库文件的存放路径是可以改的,它可能不再默认位置,那我得到的LOG目录就不正确了。

有没有更直接的方法可以找到LOG目录啊,谢谢!

#8



----------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就获得了我要的目录了,初步准备这样实现了,不知道有没有隐藏问题。

#9


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

#10


数据文件和日志文件可以放其他目录的

#11


引用 10 楼 josy 的回复:
数据文件和日志文件可以放其他目录的

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

#12


引用 4 楼 fredrickhu 的回复:
BCP?

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

#13



----------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目录的方式。

#14


访问注册表的扩展存储过程并不是所有的系统都能用的,尤其是对安全要求
较高的系统。

如果是SQL Server 2000之后的版本。可以用下面的方法:


SELECT LEFT(name,LEN(name) - 17) + N'LOG' 
FROM sys.dm_os_loaded_modules
WHERE description = N'SQL Server Windows NT'

#15


引用 14 楼 shuiniu 的回复:
访问注册表的扩展存储过程并不是所有的系统都能用的,尤其是对安全要求
较高的系统。

如果是SQL Server 2000之后的版本。可以用下面的方法:

SQL codeSELECTLEFT(name,LEN(name)-17)+ N'LOG'FROM sys.dm_os_loaded_modulesWHERE description= N'SQL Server Windows NT'

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

#1


查数据库的物理路径

#2


--sql 2000
use master

select filename from sysaltfiles

#3


引用 2 楼 dawugui 的回复:
--sql 2000
use master

select filename from sysaltfiles

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

#4


BCP?

#5


SELECT * FROM sys.database_files

#6


谢谢大家的意见,我看目前大家都是提供查询当前实例数据库文件的路径。

如果采用先查当前实例的数据库文件路径后再回退2层目录,进入log目录。

用这种方案来找到LOG目录的话,有个问题,那就是数据库文件的存放路径是可以改的,它可能不再默认位置,那我得到的LOG目录就不正确了。

有没有更直接的方法可以找到LOG目录啊,谢谢!

#7


谢谢大家的意见,我看目前大家都是提供查询当前实例数据库文件的路径。

如果采用先查当前实例的数据库文件路径后再回退2层目录,进入log目录。

用这种方案来找到LOG目录的话,有个问题,那就是数据库文件的存放路径是可以改的,它可能不再默认位置,那我得到的LOG目录就不正确了。

有没有更直接的方法可以找到LOG目录啊,谢谢!

#8



----------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就获得了我要的目录了,初步准备这样实现了,不知道有没有隐藏问题。

#9


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

#10


数据文件和日志文件可以放其他目录的

#11


引用 10 楼 josy 的回复:
数据文件和日志文件可以放其他目录的

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

#12


引用 4 楼 fredrickhu 的回复:
BCP?

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

#13



----------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目录的方式。

#14


访问注册表的扩展存储过程并不是所有的系统都能用的,尤其是对安全要求
较高的系统。

如果是SQL Server 2000之后的版本。可以用下面的方法:


SELECT LEFT(name,LEN(name) - 17) + N'LOG' 
FROM sys.dm_os_loaded_modules
WHERE description = N'SQL Server Windows NT'

#15


引用 14 楼 shuiniu 的回复:
访问注册表的扩展存储过程并不是所有的系统都能用的,尤其是对安全要求
较高的系统。

如果是SQL Server 2000之后的版本。可以用下面的方法:

SQL codeSELECTLEFT(name,LEN(name)-17)+ N'LOG'FROM sys.dm_os_loaded_modulesWHERE description= N'SQL Server Windows NT'

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