Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Директория данных SQL  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
Как лучше всего определять директорию sql, в которой по умолчанию создаются файлы БД.
Что-то вроде этого "c:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\"
В реестре все как-то неоднозначно. Может TSQL запросом? Самое главное чтоб эта информация была 100%
точной. То есть получив путь я могу утверждать что любая создаваемая БД будет помещать свои файлы в эту директорию.

Спасибо.
19 мар 12, 13:53    [12273495]     Ответить | Цитировать Сообщить модератору
 Re: Директория данных SQL  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
-- Путь по-умолчанию для файлов данных
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'D:\MSSQL_Data'
GO
-- Путь по-умолчанию для файлов журналов транзакций
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'E:\MSSQL_Logs'
GO
19 мар 12, 14:00    [12273588]     Ответить | Цитировать Сообщить модератору
 Re: Директория данных SQL  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
tpg
-- Путь по-умолчанию для файлов данных
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'D:\MSSQL_Data'
GO
-- Путь по-умолчанию для файлов журналов транзакций
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'E:\MSSQL_Logs'
GO


Э-э-э... Поправьте меня если ошибаюсь, но, во-1-х, xp_instance_regwrite является недокументированной, что, конечно, беда не столь большая. Но, во-2-х, предложенный солюшен ИЗМЕНИТ дефолтные папки данных/лога. А ТС нужно-то

=Ozzy=
получив путь


, не?
19 мар 12, 14:23    [12273810]     Ответить | Цитировать Сообщить модератору
 Re: Директория данных SQL  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
tpg,
Что то не то.
Мне не записывать нужно, а считывать.
И приведенные ветки реестра не соответствуют правде.
19 мар 12, 14:27    [12273854]     Ответить | Цитировать Сообщить модератору
 Re: Директория данных SQL  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
SamMan,
Именно :)
19 мар 12, 14:29    [12273886]     Ответить | Цитировать Сообщить модератору
 Re: Директория данных SQL  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
declare @s nvarchar(4000);
exec xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', @s output;
select @s;
19 мар 12, 14:45    [12274091]     Ответить | Цитировать Сообщить модератору
 Re: Директория данных SQL  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
invm
declare @s nvarchar(4000);
exec xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', @s output;
select @s;


Не работает. Результат NULL. А таковым он не может быть по определению.
19 мар 12, 14:53    [12274188]     Ответить | Цитировать Сообщить модератору
 Re: Директория данных SQL  [new]
Sybex
Member

Откуда: Moscow
Сообщений: 119
Может это поможет: TSQL Script – Determining Default Database File & Log Path.
19 мар 12, 15:00    [12274262]     Ответить | Цитировать Сообщить модератору
 Re: Директория данных SQL  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
Sybex
Может это поможет: TSQL Script – Determining Default Database File & Log Path.


Спасибо за ссылку, но создание БД для получения путей не лучший вариант.
А с реестром надо повозиться.
19 мар 12, 15:09    [12274349]     Ответить | Цитировать Сообщить модератору
 Re: Директория данных SQL  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
				declare @RegPathParams sysname
				declare @Arg sysname
				declare @Param sysname
				declare @MasterPath nvarchar(512)
				declare @LogPath nvarchar(512)
				declare @ErrorLogPath nvarchar(512)
				declare @n int

				select @n=0
				select @RegPathParams=N'Software\Microsoft\MSSQLServer\MSSQLServer'+'\Parameters'
				select @Param='dummy'
				while(not @Param is null)
				begin
					select @Param=null
					select @Arg='SqlArg'+convert(nvarchar,@n)

					exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', @RegPathParams, @Arg, @Param OUTPUT
					if(@Param like '-d%')
					begin
						select @Param=substring(@Param, 3, 255)
						select @MasterPath=substring(@Param, 1, len(@Param) - charindex('\', reverse(@Param)))
					end
					else if(@Param like '-l%')
					begin
						select @Param=substring(@Param, 3, 255)
						select @LogPath=substring(@Param, 1, len(@Param) - charindex('\', reverse(@Param)))
					end
					else if(@Param like '-e%')
					begin
						select @Param=substring(@Param, 3, 255)
						select @ErrorLogPath=substring(@Param, 1, len(@Param) - charindex('\', reverse(@Param)))
					end
					
					select @n=@n+1
				end
			


				declare @SmoRoot nvarchar(512)
				exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\Setup', N'SQLPath', @SmoRoot OUTPUT
			


SELECT
@ErrorLogPath AS [ErrorLogPath],
@SmoRoot AS [RootDirectory],
CAST(case when 'a' <> 'A' then 1 else 0 end AS bit) AS [IsCaseSensitive],
@@MAX_PRECISION AS [MaxPrecision],
CAST(FULLTEXTSERVICEPROPERTY('IsFullTextInstalled') AS bit) AS [IsFullTextInstalled],
@LogPath AS [MasterDBLogPath],
@MasterPath AS [MasterDBPath],
SERVERPROPERTY(N'ProductVersion') AS [VersionString],
CAST(SERVERPROPERTY(N'Edition') AS sysname) AS [Edition],
CAST(SERVERPROPERTY(N'ProductLevel') AS sysname) AS [ProductLevel],
CAST(SERVERPROPERTY('IsSingleUser') AS bit) AS [IsSingleUser],
CAST(SERVERPROPERTY('EngineEdition') AS int) AS [EngineEdition],
convert(sysname, serverproperty(N'collation')) AS [Collation],
CAST(SERVERPROPERTY(N'MachineName') AS sysname) AS [NetName],
CAST(SERVERPROPERTY('IsClustered') AS bit) AS [IsClustered],
SERVERPROPERTY(N'ResourceVersion') AS [ResourceVersionString],
SERVERPROPERTY(N'ResourceLastUpdateDateTime') AS [ResourceLastUpdateDateTime],
SERVERPROPERTY(N'CollationID') AS [CollationID],
SERVERPROPERTY(N'ComparisonStyle') AS [ComparisonStyle],
SERVERPROPERTY(N'SqlCharSet') AS [SqlCharSet],
SERVERPROPERTY(N'SqlCharSetName') AS [SqlCharSetName],
SERVERPROPERTY(N'SqlSortOrder') AS [SqlSortOrder],
SERVERPROPERTY(N'SqlSortOrderName') AS [SqlSortOrderName],
SERVERPROPERTY(N'BuildClrVersion') AS [BuildClrVersionString],
SERVERPROPERTY(N'ComputerNamePhysicalNetBIOS') AS [ComputerNamePhysicalNetBIOS]
19 мар 12, 15:24    [12274488]     Ответить | Цитировать Сообщить модератору
 Re: Директория данных SQL  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
посмотрите здесь
19 мар 12, 15:29    [12274534]     Ответить | Цитировать Сообщить модератору
 Re: Директория данных SQL  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
HandKot
посмотрите здесь


Спасибо. Все теперь понятно.
19 мар 12, 15:48    [12274704]     Ответить | Цитировать Сообщить модератору
 Re: Директория данных SQL  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4256
https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=307709&hl=registry
19 мар 12, 17:16    [12275625]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить