Как я нахожу каталог данных для экземпляра SQL Server?

Несколько принципов:

  1. у Вас есть станд.:: базовый класс исключения, у Вас должны быть свои исключения, происходят из него. Тем путем общий обработчик исключений все еще имеет некоторую информацию.

  2. не бросают указатели, но объект, тот способ, которым память обрабатывается для Вас.

Пример:

struct MyException : public std::exception
{
   std::string s;
   MyException(std::string ss) : s(ss) {}
   ~MyException() throw () {} // Updated
   const char* what() const throw() { return s.c_str(); }
};

И затем используют его в Вашем коде:

void Foo::Bar(){
  if(!QueryPerformanceTimer(&m_baz)){
    throw MyException("it's the end of the world!");
  }
}

void Foo::Caller(){
  try{
    this->Bar();// should throw
  }catch(MyException& caught){
    std::cout<<"Got "<<caught.what()<<std::endl;
  }
}
67
задан Alex Aza 1 June 2015 в 19:42
поделиться

5 ответов

Small nitpick: there is no data folder, only a default data folder.

Anyway, to find it, assuming you want to install for the first default instance:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Setup\SQLDataRoot

If there's a named instance, MSSQL.1 becomes something like MSSQL10.INSTANCENAME.

0
ответ дан 24 November 2019 в 14:25
поделиться

Various components of SQL Server (Data, Logs, SSAS, SSIS, etc) have a default directory. The setting for this can be found in the registry. Read more here:

http://technet.microsoft.com/en-us/library/ms143547%28SQL.90%29.aspx

So if you created a database using just CREATE DATABASE MyDatabaseName it would be created at the path specified in one of the settings above.

Now, if the admin / installer changed the default path, then the default path for the instance is stored in the registry at

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\[INSTANCENAME]\Setup

If you know the name of the instance then you can query the registry. This example is SQL 2008 specific - let me know if you need the SQL2005 path as well.

DECLARE @regvalue varchar(100)

EXEC master.dbo.xp_regread @rootkey='HKEY_LOCAL_MACHINE',
        @key='SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.MSSQLServer\Setup',
        @value_name='SQLDataRoot',
        @value=@regvalue OUTPUT,
        @output = 'no_output'

SELECT @regvalue as DataAndLogFilePath

Each database can be created overriding the server setting in a it's own location when you issue the CREATE DATABASE DBName statement with the appropriate parameters. You can find that out by executing sp_helpdb

exec sp_helpdb 'DBName'
8
ответ дан 24 November 2019 в 14:25
поделиться

Из графического интерфейса: откройте свойства сервера. , перейдите в Настройки базы данных и просмотрите Расположение базы данных по умолчанию .

Обратите внимание, что вы можете перетащить файлы базы данных куда угодно, хотя, кажется, проще оставить их в каталоге по умолчанию .

2
ответ дан 24 November 2019 в 14:25
поделиться

Я наткнулся на это решение в документации для оператора Create Database в справке для SQL Server:

SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
                  FROM master.sys.master_files
                  WHERE database_id = 1 AND file_id = 1
34
ответ дан 24 November 2019 в 14:25
поделиться

For the current database you can just use:

select physical_name fromsys.database_files;

to specify another database e.g. 'Model', use sys.master_files

select physical_name from sys.master_files where database_id = DB_ID(N'Model');

23
ответ дан 24 November 2019 в 14:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: