2010-07-20 141 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