L'extrait de code ci-dessous est ce que j'ai extrait de SQL Profiler. Je l'ai modifié un peu pour supprimer les colonnes moins utiles. Le code renvoie à présent une rangée avec les colonnes suivantes:
- IsFullTextInstalled
- MasterDBLogPath
- MasterDBPath
- ErrorLogPath
- RootDirectory
- IsCaseSensitive
- MaxPrecision
- VersionString (par exemple, 10,50. 2500.0)
- Edition (par ex. Developer Edition (64-bit))
- ProductLevel (par exemple SP1)
- IsSingleUser
- EngineEdition (par exemple 3)
- Collation (par exemple Latin1_General_CI_AS)
- IsClustered
- NetName (par exemple votre nom d'hôte)
- BuildClrVersionString (par exemple v2.0.50727)
Bonne chance.
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 @[email protected]+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 CAST(FULLTEXTSERVICEPROPERTY('IsFullTextInstalled') AS bit) AS [IsFullTextInstalled], @LogPath AS [MasterDBLogPath], @MasterPath AS [MasterDBPath], @ErrorLogPath AS [ErrorLogPath], @SmoRoot AS [RootDirectory], CAST(case when 'a' <> 'A' then 1 else 0 end AS bit) AS [IsCaseSensitive], @@MAX_PRECISION AS [MaxPrecision], 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('IsClustered') AS bit) AS [IsClustered], CAST(SERVERPROPERTY(N'MachineName') AS sysname) AS [NetName], SERVERPROPERTY(N'BuildClrVersion') AS [BuildClrVersionString]
mais quelle entrée utilisez-vous? dans mon cas, j'ai mes bases de données master/msdb/model dans un répertoire différent de mes bases de données utilisateur ..... –
"toujours aux côtés d'autres bases de données" est ce que je suis parti de la question.Il ne demandait pas forcément comment trouver le répertoire de données par défaut car marc_s spécifiait la solution. Vraiment ressembler à 2 problèmes différents IMO. Dans plusieurs cas que j'administre, nous devons avoir plusieurs lecteurs qui hébergent des bases de données différentes pour des raisons de performances, ce qui rend le répertoire de données par défaut un mauvais choix dans la plupart des cas pour cette situation. –
désolé pour la confusion. Il était mal formulé et alors que j'étais vraiment après le répertoire de données par défaut, cette réponse est tout aussi valide, donc je l'ai aussi mise à jour. Merci – Dolbz