2010-07-20 140 views
1

如何使用SQL查询返回SQL Server中的根目录?SQL服务器根目录

谢谢。

+0

您将需要更强大的解决方案 - 就像存储过程一样。也看看xp_cmdshell。 – Tobiasopdenbrouw 2010-07-20 11:42:41

回答

1

它的要点是:

Code Snippet 

Declare @Path as varchar(100); 

Set @Path = NULL 
Exec master..xp_regread 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Microsoft SQL Server\70\Tools\ClientSetup', 'SQLPath', @Path OUTPUT 
Select @Path as [Sql Server 7.0 path] 


Set @Path = NULL 
Exec master..xp_regread 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Microsoft SQL Server\80\Tools\ClientSetup', 'SQLPath', @Path OUTPUT 
Select @Path as [Sql Server 2000 path] 


Set @Path = NULL 
Exec master..xp_regread 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Microsoft SQL Server\90\Tools\ClientSetup', 'SQLPath', @Path OUTPUT 
Select @Path as [Sql Server 2005 path] 


Set @Path = NULL 
Exec master..xp_regread 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Microsoft SQL Server\100\Tools\ClientSetup', 'SQLPath', @Path OUTPUT 
Select @Path as [Sql Server KATMAI path] 

here

3

采取的是以前对返回SQL客户端,这是不是真的,你想要的位置。以下工作在SQL 2005,2008和2008 R2中。

declare @SQLDataRoot varchar(256) 
exec master..xp_instance_regread 
    @rootkey='HKEY_LOCAL_MACHINE', 
    @key='SOFTWARE\Microsoft\MSSQLServer\Setup', 
    @value_name='SQLDataRoot', 
    @[email protected] output 

的无证xp_instance_regread正确地在注册表中查找来获得您所查询的SQL实例SQLDataRoot变量 - 你在上面的查询看到的,路径是不是在注册表相当的真实路径。 XP用版本和实例名称替换MSSQLServer。例如,在我的情况下真正的关键是

SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.Inst2\Setup 

在这种情况下,我与INST2实例名称运行SQL 2008 R2(变成MSSQL10_50)。

+0

SQLDataRoot包含一个没有数据的路径,例如“C:\ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL”而不是“... \ MSSQL \ Data”。将“\ Data”追加到返回的路径可以吗? – liwp 2011-06-07 09:38:17

+0

是的,取决于你以后的情况。我在\ Data中有数据库文件,在\ Backup中登录\ Logs,备份,全部在该路径下。 SQLDataRoot是那些根目录下的目录。 – 2011-06-15 09:27:32

+0

我可以更改根目录吗?目前它指向D:Drive,我想把它改成C盘。 – codetoshare 2016-06-02 05:41:50