Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

मैं SQL सर्वर इंस्टेंस के लिए डेटा निर्देशिका कैसे ढूंढूं?

यह इस बात पर निर्भर करता है कि डेटा और लॉग फ़ाइलों के लिए डिफ़ॉल्ट पथ सेट है या नहीं।

यदि पथ स्पष्ट रूप से Properties . पर सेट किया गया है => Database Settings => Database default locations तब SQL सर्वर इसे Software\Microsoft\MSSQLServer\MSSQLServer पर स्टोर करता है DefaultData . में और DefaultLog मान।

हालांकि, अगर ये पैरामीटर स्पष्ट रूप से सेट नहीं हैं, तो SQL सर्वर मास्टर डेटाबेस के डेटा और लॉग पथ का उपयोग करता है।

बोलो वह स्क्रिप्ट है जो दोनों मामलों को कवर करती है। यह क्वेरी का सरलीकृत संस्करण है जिसे SQL प्रबंधन स्टूडियो चलाता है।

साथ ही, ध्यान दें कि मैं xp_instance_regread . का उपयोग करता हूं xp_regread . के बजाय , इसलिए यह स्क्रिप्ट डिफ़ॉल्ट या नामित किसी भी उदाहरण के लिए काम करेगी।

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 @DefaultBackup nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'BackupDirectory', @DefaultBackup 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,
    isnull(@DefaultBackup, @MasterLog) DefaultBackup

आप एसएमओ का उपयोग करके एक ही परिणाम प्राप्त कर सकते हैं। Bellow C# नमूना है, लेकिन आप किसी अन्य .NET भाषा या पावरशेल का उपयोग कर सकते हैं।

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;
}

SQL सर्वर 2012 और इसके बाद के संस्करण में यह बहुत आसान है, यह मानते हुए कि आपके पास डिफ़ॉल्ट पथ सेट हैं (जो शायद हमेशा एक सही काम है):

select 
    InstanceDefaultDataPath = serverproperty('InstanceDefaultDataPath'),
    InstanceDefaultLogPath = serverproperty('InstanceDefaultLogPath')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तालिका के लिए पंक्ति का आकार निर्धारित करें

  2. SQL सर्वर में सिंगल कॉलम पर चेक बाधा कैसे बनाएं - SQL सर्वर / TSQL ट्यूटोरियल पार्ट 83

  3. SQL सर्वर में एक संयोजित स्ट्रिंग में एक सेपरेटर कैसे जोड़ें - CONCAT_WS ()

  4. ऑलवेजऑन उपलब्धता समूहों को कॉन्फ़िगर करना - भाग 2

  5. जावा एप्लिकेशन में sp_msforeachdb निष्पादित करें