使用T-SQL在Linux上获取sql server默认备份文件夹

问题描述 投票:0回答:1

对于Windows上的SQL Server获取默认备份文件夹,我们可以使用master.dbo.xp_instance_regread

    DECLARE @HkeyLocal nvarchar(18) = N'HKEY_LOCAL_MACHINE';
    DECLARE @MSSqlServerRegPath nvarchar(31) = N'SOFTWARE\Microsoft\MSSQLServer';
    DECLARE @InstanceRegPath sysname = @MSSqlServerRegPath + N'\MSSQLServer';

    DECLARE @BackupDirectory nvarchar(512)
    if 1=isnull(cast(SERVERPROPERTY('IsLocalDB') as bit), 0)
    SET @BackupDirectory=cast(SERVERPROPERTY('instancedefaultdatapath') as nvarchar(512))
    else
    EXEC master.dbo.xp_instance_regread @HkeyLocal, @InstanceRegPath, N'BackupDirectory', @BackupDirectory OUTPUT;

    SELECT @BackupDirectory AS SQLServerBackupDirectory;

但对于Linux来说它不起作用。任何人都可以帮助T-SQL方法(我只找到SSMS解决方案here)?

sql-server linux tsql sql-server-2017 sql-server-2019
1个回答
1
投票

我从来没有找到一种非注册表方式来在t-sql中可靠地获取备份目录。我通常只是替换/ data / to / backup /因为在默认情况下安装它与数据目录的关系是明确的。这并不能直接回答您的问题,但如果您在安装过程中没有完成单独的目录自定义,那么这是一种有效的方法。

-- for one of my databases, [dharma] in my linux test-bed.
declare @bkup nvarchar(1024)
set @bkup = replace(cast(SERVERPROPERTY('instancedefaultdatapath') as nvarchar(512)),'/data/','/backup/') + 'dharma.bak'
backup database dharma to disk = @bkup
© www.soinside.com 2019 - 2024. All rights reserved.