Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Расположение файлов баз данных.


Автор: Random13 8.1.2009, 19:52
Мне в программе нужно узнать путь, в который SQLSERVER EXPRESS  кидает автоматом файлы баз данных при их создании по запросу.
Я пользовался путем записанном в реестре.

"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\Setup\"

смотрю ключ SQLPath

там как правило прописано что-то типа

с:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL

добавляю "\Data\"

и там лежат файлы баз данных.

Иногда, правда SQLSERVER создает папку MSSQL.2 (думаю иногда в случаях инсталляции другой версии) - но и путь в реестре при этом обычно менялся...

Но вот сегодня набрел на случай, когда в реестре написано 

с:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL

а файлы реально создаются на 

с:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\


Может кто знает - может я что-то не так делаю ? Может можно где еще этот путь подсмотреть ? Или все правильно у меня - и это просто глюк SQLSERVER ?

Автор: Zioma 28.1.2009, 12:58
Для определения значения размещения файлов БД в 2005 сиквеле используй:

Код

declare @DefaultFile nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', @DefaultFile OUTPUT


declare @DefaultLog nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', @DefaultLog OUTPUT

select @DefaultFile, @DefaultLog


            
Если значения пустые, то используется значения месторасположения базы master (самое простое - через sp_helpdb 'master', но можно и через параметры)

P.S.
Точка и число после нее в названиях директорий сиквела означают номер инстанса.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)