Alex's Weblog

Weblog di Ermanno Goletto (Codename Alex - A Learning EXperience)
posts - 438, comments - 4214, trackbacks - 294

My Links

News

Il blog è stato
trasferito al
 seguente link:


DevAdmin Blog

Add my blog to Live

Foto

Curriculum Vitae


Il contenuto di questo blog e di ciascun post viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto. Questo blog riporta il mio personale pensiero che non riflette necessariamente il pensiero del mio datore di lavoro.

Logo Creative Commons Deed


Logo MCTS

Logo MCSA

Logo MCP

Logo Microsoft Certified Business Management Solutions Professional

Microsoft Certified Business Management Solutions Specialist


Logo UGIdotNET UGIdotNET Contributor


Logo UGISS UGISS Contributor


Logo SysAdmin.it SysAdmin.it Staff


Article Categories

Archives

Post Categories

Blogs

Database

Development

Friends

IT

Knowledge Base

Links

MBS

MCP

MVP Sites

User Groups

Virtualization

Ricavare i path di default per i file di dati e logs in SQL Server 2005

Una delle impostazioni che possibile fare su un'istanza di SQL Server è quella del percorso di default in cui memorizzare file dati e logs di un nuovo database. Ho fatto diverse ricerca, ma non trovato un modo semplice per ricavare tramite T-SQL tali informazioni.

A quanto sembra se si modificano tali percorsi questi vengono memorizzati nelle chiavi di registry:

  • HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer\DefaultData
  • HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer\DefaultLog

In caso contrario i path è quello specificato durante l'installazione per i File di dati quindi si può pensare di ricavarli dai path dei file mdf e ldf del database master.

Di seguito uno script T-SQL per ricavare il path di default per i file di dati:

USE master
declare @DefaultData nvarchar(512)

--Lettura chiave di registry HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer\DefaultData
EXEC xp_instance_regread N'HKEY_LOCAL_MACHINE',
 N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData',
 @DefaultData OUTPUT, 'no_output'

--Se la chiave di registry non esiste si utilizza il path del file mdf del database master
IF (@DefaultData IS NULL)
 BEGIN
  SELECT  @DefaultData = SUBSTRING(physical_name, 0, CHARINDEX(N'master.mdf', physical_name))
  FROM sys.database_files
  WHERE name='master'
 END

--Rimozione eventuale slash finale
IF ((@DefaultData IS NOT NULL) AND (CHARINDEX(N'\', @DefaultData, len(@DefaultData)) > 0))
BEGIN
 SELECT @DefaultData = STUFF (@DefaultData,len(@DefaultData),1,N'')
END

SELECT @DefaultData

Mentre questo è lo script per ricavare il path di default per i file di log:

USE master
declare @DefaultLog nvarchar(512)

--Lettura chiave di registry HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer\DefaultLog
EXEC xp_instance_regread N'HKEY_LOCAL_MACHINE',
 N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog',
 @DefaultLog OUTPUT, 'no_output'

--Se la chiave di registry non esiste si utilizza il path
--del file mdf del database master
IF (@DefaultLog IS NULL)
 BEGIN
  SELECT  @DefaultLog = SUBSTRING(physical_name, 0, CHARINDEX(N'mastlog.ldf', physical_name))
  FROM sys.database_files
  WHERE name='mastlog'
 END

--Rimozione eventuale slash finale
IF ((@DefaultLog IS NOT NULL) AND (CHARINDEX(N'\', @DefaultLog, len(@DefaultLog)) > 0))
BEGIN
 SELECT @DefaultLog = STUFF (@DefaultLog,len(@DefaultLog),1,N'')
END

SELECT @DefaultLog

Se poi occorre usare questi script in un programma .NET il mio consiglio è quello di non inserire lo script nel codice, ma di creare dei file con estensione sql in questo modo Visual Studio visualizzerà lo script evidenziando le parole chiave esattamente come in Management Studio. Quindi aggiungere il file come risorsa in questo modo VS 2005 e sucessivi creeranno una comoda prorietà stringa in My.Resources che conterrà il testo del file. In VS 2003 è possibile impostare il file come Embedded e tramite un po' di codice leggere il contenuto del file:

        Dim text As String = String.Empty
        Dim resource As System.IO.Stream = _
            System.Reflection.Assembly.GetExecutingAssembly.GetManifestResourceStream( _
                "NameSpace.FileName")

        Dim reader As New System.IO.StreamReader(resource)
        text = reader.ReadToEnd()

        reader.Close() : reader = Nothing
        resource.Close() : resource = Nothing

Print | posted on Thursday, May 29, 2008 9:50 PM | Filed Under [ Code & Snippet Database .NET Framework .NET Framework 2.0 ]

Feedback

Gravatar

# re: Ricavare i path di default per i file di dati e logs in SQL Server 2005

se ti servono informazioni ad esempio sul posizionamento dei file per quanto riguarda i nuovi database, devi fare riferimento al database model che è uno dei database di sistema e non al master. Il database model serve proprio come template per la creazione dei nuovi db
6/16/2008 6:41 PM | Riccardo di Nuzzo
Gravatar

# re: Ricavare i path di default per i file di dati e logs in SQL Server 2005

Ciao Riccardo,
io ho preso spunto da questo post
http://blogs.msdn.com/gertd/archive/2007/12/18/designdb-location.aspx
però in effetti la tua osservazione è corretta, anche se il dabase master o model
entra in gioco solo se non ho modificato il path dei file per trovare quello
specificato durante l'installazione e in questa situazione direi che model
e master si trovino nella stessa posizione
Però come ho detto l'osservazione sta.
6/16/2008 7:20 PM | Alex
Gravatar

# re: Ricavare i path di default per i file di dati e logs in SQL Server 2005

This is a great post, to be honest I was well aware of Mini Wireless Keyboard is what I am looking for. I am a lover of such kind of keybord.
6/21/2011 9:58 AM | Mini Wireless Keyboard
Gravatar

# re: Ricavare i path di default per i file di dati e logs in SQL Server 2005

If you are interested in Mini Wireless Keyboard, tomtop.com is a good online store which offers such keyboard at low price with fast free shipping.Wireless Keyboard with Touchpad
6/29/2011 2:45 AM | Wireless Keyboard with Touchpad
Gravatar

# re: Ricavare i path di default per i file di dati e logs in SQL Server 2005

This is a great post.Green Laser Pointers
7/4/2011 5:48 AM | Green Laser Pointers
Gravatar

# re: Ricavare i path di default per i file di dati e logs in SQL Server 2005

This is a really cool effect. Looks like it’s very tedious to do though. Puzzle Toys
7/22/2011 12:12 PM | wikecamera
Gravatar

# re: Ricavare i path di default per i file di dati e logs in SQL Server 2005

Solar collector
Solar heating
Solar water heater china
Solar water heater manufacturer
Solar water heater supplier
Solar water heaters
Solar water heater factory
Solar water heating china
Solar water heating manufacturer
Solar water heating supplier
Solar water heatings
Solar water heating factory
Solar heater china
Solar heater manufacturer
Solar heater supplier
Solar heaters
Solar heater factory
Solar hot water system china
Solar hot water system manufacturer
Solar hot water system supplier
Solar hot water systems
Solar hot water system factory
Solar collector china
3/6/2013 3:58 AM | power
Gravatar

# check cashing

You’ve published pleasant write-up, I am about to search for this site appreciate it intended for facts. When I basically get pleasure from your individual location in addition to me will be guaranteed an extra shot in this article. At this point likewise simply click here check cashing Good luck for great do the job & Thanks.
10/19/2017 10:23 PM | Pervez
Gravatar

# re: Ricavare i path di default per i file di dati e logs in SQL Server 2005

The information you shared is really interesting. I appreciate the fact that you have tried and took time to post here.
3/7/2018 7:15 PM | malware virus removal
Gravatar

# re: Ricavare i path di default per i file di dati e logs in SQL Server 2005

Call Centers in India
Outsource Telemarketing Services
Website Designing Company in India
5/29/2018 11:31 AM | Shikha
Gravatar

# re: Ricavare i path di default per i file di dati e logs in SQL Server 2005

Magento Website Development
Magento Support
6/9/2018 12:21 PM | SAM
Gravatar

# websitebackupbot

Good day my best mate! I want to express that you’re posting rocks! Awesome authored highlight the majority of sizeable information and facts. At this moment please click here websitebackupbot With thanks!
6/29/2018 5:34 PM | Pervez
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET