如何获取SQL Server 2008数据库数据文件的位置
发布网友
发布时间:2022-04-09 10:39
我来回答
共1个回答
热心网友
时间:2022-04-09 12:09
问题:用sql语句获取mdf默认存放路径
这个路径没有放在sql server里面,而是在注册表里,路径是:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer,其中MSSQL10_50.MSSQLSERVER是sql server 2008的默认instance name,参考http://msdn.microsoft.com/en-us/library/ms143547.aspx。
sql server里面可以用xp_instance_regread读取注册表内容,问题就出在这个上面了,直接看解法,
?
1
2
3
4
5
6
declare @SmoDefaultFile nvarchar(1000)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\Microsoft SQL Server\MSSQLServer', N'DefaultData', @SmoDefaultFile OUTPUT
select @SmoDefaultFile
set @SmoDefaultFile=null
exec master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer', N'DefaultData', @SmoDefaultFile OUTPUT
select @SmoDefaultFile
两种方案的答案是相同的(第二种可能在不同的配置下会有问题)。
弄巧成拙,把第二个用法的参数用到了第一个上,搞好就才弄明白怎么回事。最后还是伟大的stack overlfow告诉我,xp_instance_regread会自动把路径转换成当成使用的instance对应的路径,而xp_regread就是个呆瓜,实打实的货。
最简单的方法是打开SQL管理器,到属性里可以看到路径