獲取SQL Server默認數據文件存放路徑


本來以為挺簡單的東西,還是費了點勁

問題:用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讀取注冊表內容,問題就出在這個上面了,直接看解法,

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就是個呆瓜,實打實的貨。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM