使用 TSQL 从远程服务器获取默认数据和日志目录

使用 TSQL 从远程服务器获取默认数据和日志目录

如何知道独立于实例名称、集群名称或默认实例的目录?

**更新:** 非常重要,您不能使用 nvarchar(MAX) 读取注册表数据,只能使用有值的 nvarchar(例如 nvarchar(4000))。我不知道这一点,所以我的读取总是失败……

**更新 2:** 在集群上,默认数据目录位于

软件\Microsoft\MSSQLServer\安装程序

SQLDataRoot 键上的注册表。

**更新 3:**对于远程服务器使用链接服务器!

这是最终的脚本:

declare @datadir nvarchar(4000)
        ,@logdir nvarchar(4000);

EXEC master.dbo.xp_instance_regread 
    N'HKEY_LOCAL_MACHINE'
    , N'Software\Microsoft\MSSQLServer\MSSQLServer'
    , N'DefaultData'
    , @datadir output;

IF @datadir IS NULL
BEGIN
EXEC master.dbo.xp_instance_regread 
    N'HKEY_LOCAL_MACHINE'
    , N'Software\Microsoft\MSSQLServer\Setup'
    , N'SQLDataRoot'
    , @datadir output;
END
EXEC master.dbo.xp_instance_regread 
    N'HKEY_LOCAL_MACHINE'
    , N'Software\Microsoft\MSSQLServer\MSSQLServer'
    , N'DefaultLog'
    , @logdir output;

SELECT @datadir as Data, ISNULL(@logdir,@datadir) as Log;

答案1

您将在注册表中找到可以从 TSQL 中读取的默认数据和日志目录xp_instance_regread存储过程。请参阅此帖子了解详细信息。

http://tenbulls.co.uk/2010/07/08/how-to-set-and-manage-your-sql-server-default-paths/

相关内容