Как я могу восстановить корневой каталог на SQL-сервере с помощью SQL-запроса ???SQL-сервер корневой каталог
Спасибо.
Как я могу восстановить корневой каталог на SQL-сервере с помощью SQL-запроса ???SQL-сервер корневой каталог
Спасибо.
Суть его заключается в следующем:
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
Предыдущий возвращает местоположение для 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.
SQLDataRoot содержит путь без данных, например. «C: \ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL» вместо «... \ MSSQL \ Data». Можно ли просто добавить «\ Data» к возвращенному пути? – liwp
Да, в зависимости от того, что вам нужно. У меня есть файлы базы данных в \ Data, журналы в \ Logs, backups in \ Backup, все под этим путем. SQLDataRoot - это каталог в корне. –
Можно ли изменить корневой каталог? В настоящее время он указывает на D: Drive, я хочу изменить его на диск C. – codetoshare
Вам понадобится более мощное решение - как хранимая процедура. Также загляните в xp_cmdshell. – Tobiasopdenbrouw