Elle dépend de chemin d'accès par défaut est définie pour les données et les fichiers journaux ou non.
Si le chemin d'accès est défini explicitement Properties
=> Database Settings
=> Database default locations
puis de SQL server stocke dans Software\Microsoft\MSSQLServer\MSSQLServer
en DefaultData
et DefaultLog
valeurs.
Toutefois, si ces paramètres ne sont pas explicitement définie, SQL server utilise les Données et les chemins de Journal de base de données master.
Soufflet est le script qui couvre les deux cas. C'est la version simplifiée de la requête SQL Management Studio s'exécute.
Aussi, notez que j'utilise xp_instance_regread
au lieu de xp_regread
, de sorte que ce script fonctionne pour n'importe quelle instance, soit par défaut ou nommé.
declare @DefaultData nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', @DefaultData output
declare @DefaultLog nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', @DefaultLog output
declare @MasterData nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters', N'SqlArg0', @MasterData output
select @MasterData=substring(@MasterData, 3, 255)
select @MasterData=substring(@MasterData, 1, len(@MasterData) - charindex('\', reverse(@MasterData)))
declare @MasterLog nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters', N'SqlArg2', @MasterLog output
select @MasterLog=substring(@MasterLog, 3, 255)
select @MasterLog=substring(@MasterLog, 1, len(@MasterLog) - charindex('\', reverse(@MasterLog)))
select
isnull(@DefaultData, @MasterData) DefaultData,
isnull(@DefaultLog, @MasterLog) DefaultLog
Vous pouvez obtenir le même résultat à l'aide de SMO. Soufflet est C# de l'échantillon, mais vous pouvez utiliser n'importe quel autre .NET de la langue ou de PowerShell.
using (var connection = new SqlConnection("Data Source=.;Integrated Security=SSPI"))
{
var serverConnection = new ServerConnection(connection);
var server = new Server(serverConnection);
var defaultDataPath = string.IsNullOrEmpty(server.Settings.DefaultFile) ? server.MasterDBPath : server.Settings.DefaultFile;
var defaultLogPath = string.IsNullOrEmpty(server.Settings.DefaultLog) ? server.MasterDBLogPath : server.Settings.DefaultLog;
}