Im8*_*m88 1 sql-server sql-server-2008-r2 restore
我正在创建一个脚本来将数据库从备份文件恢复到实例的默认位置,该位置远离系统数据库安装文件夹。
目前,我正在使用查找默认DATA位置
SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
FROM master.sys.master_files
WHERE database_id = 1 AND file_id = 1
Run Code Online (Sandbox Code Playgroud)
和默认LOG位置
SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'mastlog.ldf', LOWER(physical_name)) - 1)
FROM master.sys.master_files
WHERE database_id = 1
AND file_id = 2
)
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以在查询的帮助下找到数据库默认位置?
谢谢你的时间。
大多数 SQL Server 被配置为非系统数据库存在于系统数据库之外。这就是默认路径的通常含义。
您可以在以下位置查找一些代码以找到它:
http://www.codeproject.com/Articles/684020/Checking-MS-SQL-Server-database-files-default-path
此外,Alex Aza 在 StackOverflow 上发表了一篇受欢迎的文章。关键是从存储它们的注册表项中获取数据。这是 Alex 较长脚本中的一个片段:
declare @DefaultData nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE',
N'Software\Microsoft\MSSQLServer\MSSQLServer',
N'DefaultData', @DefaultData output
declare @DefaultLog nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE',
N'Software\Microsoft\MSSQLServer\MSSQLServer',
N'DefaultLog', @DefaultLog output
Run Code Online (Sandbox Code Playgroud)