有些时候你的应用程序需要知道你数据库详细的路径。有代表性的应用程序需要这个信息,但是,有时候,你可能需要在存储过程中需要它。有两种方法包含这个信息:你可以检查登记处并在那获得它或者使用T-SQL。
这个信息的实际注册地方将依赖于你的设置和你安装的SQL的版本。你寻找的标签是SQLDataRoot。在我的机器上,它在下面这个结点中:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoftSQLServerMSSQL.1Setup
如果你需要知道SQL确切的地方,可以看SQLPath标签,它同样在相同的结点里。
注意:因为结点的名字根据你的SQL Server的版本不同而不同,找到它最简单的方法就是打开regedit并寻找SQLDataRoot。
使用T-SQL,有一个扩展存储进程叫做xp_instance_regread.找到它,复制下面的代码到查询分析器中:
DECLARE @retvalue int, @data_dir varchar(500)
EXECUTE @retvalue = master.dbo.xp_instance_regread 'HKEY_LOCAL_MACHINE',
'SOFTWAREMicrosoftMSSQLServerSetup',
'SQLDataRoot', @param = @data_dir OUTPUT
PRINT 'SQL Server Data Path: '+ @data_dir
上面的代码清楚的调用了扩展存储进程,它们基于一些假设。这些假设将使用在其他一些数据库中的返回值里。
现在你看这个分析器,xp_instance_regread进程被使用以便包含任何注册设置,并不是仅仅只有SQL-specific设置。