【问题标题】:Getting the sql server default backup folder on Linux with T-SQL使用 T-SQL 在 Linux 上获取 sql server 默认备份文件夹
【发布时间】:2019-04-01 12:22:01
【问题描述】:

对于 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】:

    我从未找到在 t-sql 中可靠地获取备份目录的非注册表方式。我通常只是将 /data/ 替换为 /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
    

    【讨论】:

    • 感谢您的建议,等待正确的替代方案(可以随时更改默认备份文件夹)几天,如果没有运气,我会批准您的回答。
    • 我更改了我的 RHEL 克隆上的默认备份目录,它将新值存储在 /var/opt/mssql/mssql.conf 中,而不是我希望的 master 或 msdb 中。希望他们在某个时候更新注册表存储过程以从 *nix 配置文件中提取值。他们目前甚至不允许您在 SSMS 中更改它。只有外壳。
    【解决方案2】:

    在 SQL Server v2019 中,Microsoft 增强了 ServerProperty 以公开 InstanceDefaultBackupPath。说到这里(https://learningintheopen.org/2020/06/08/sql-server-configuration-default-directories/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 2013-03-25
      • 2011-07-09
      • 1970-01-01
      相关资源
      最近更新 更多