2010-07-20 6 views
1

Как я могу восстановить корневой каталог на SQL-сервере с помощью SQL-запроса ???SQL-сервер корневой каталог

Спасибо.

+0

Вам понадобится более мощное решение - как хранимая процедура. Также загляните в xp_cmdshell. – Tobiasopdenbrouw

ответ

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 Client, которая не совсем то, что вы хотите. Следующие действия выполняются в 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 правильно выглядит в реестре, чтобы получить переменную SQLDataRoot для экземпляра SQL, который вы запрашиваете - путь, который вы видите в приведенном выше запросе не совсем верный путь в реестре. XP заменяет MSSQLServer версией и именем экземпляра. Например, истинный ключ на моем случае это

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

В этом случае, я бегу SQL 2008 R2 (превращается в MSSQL10_50) с именем экземпляра Inst2.

+0

SQLDataRoot содержит путь без данных, например. «C: \ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL» вместо «... \ MSSQL \ Data». Можно ли просто добавить «\ Data» к возвращенному пути? – liwp

+0

Да, в зависимости от того, что вам нужно. У меня есть файлы базы данных в \ Data, журналы в \ Logs, backups in \ Backup, все под этим путем. SQLDataRoot - это каталог в корне. –

+0

Можно ли изменить корневой каталог? В настоящее время он указывает на D: Drive, я хочу изменить его на диск C. – codetoshare

Смежные вопросы