Create database - folder docelowy

0

Witam,

Mam problem ze znalezieniem domyslnego folderu przy tworzeniu bazy danych.
Jezeli baza jest tworzona z SQL Management Studio pliki laduja w folderze:
C:\Program Files\Microsoft SQL Server\MSSQL12.ECOFIS\MSSQL\DATA**\test**.mdf, gdzie ECOFIS to Instance name, a test database name.
Jak znalezc ta sciezkę z poziomu C#, znajac tylko Instance name?

SqlConnection dbConnection = new SqlConnection("Data Source = (local)\\Ecofis; Integrated Security = True; database=master");
string commandSqlCreateDB = "CREATE DATABASE test2 ON PRIMARY " +
            " (NAME = test2_data," +
           " FILENAME = '"+default_path+"\\test.mdf')";

Jak znalezc default_path, zakladajac ze wersja MS SQL tez moze byc inna?

1

Zapytaj bazę master o jej lokalizację :)

SELECT physical_name FROM sys.database_files WHERE type_desc = 'ROWS';
0
neves napisał(a):

Zapytaj bazę master o jej lokalizację :)

Dziala, dzieki!!

2

Pytanie jest jeszcze, po co chcesz przekazywać lokalizację bazy danych w Create Database? To polecenie dokładnie wie, gdzie ma utworzyć pliki bazy.

0
Juhas napisał(a):

Pytanie jest jeszcze, po co chcesz przekazywać lokalizację bazy danych w Create Database? To polecenie dokładnie wie, gdzie ma utworzyć pliki bazy.

Wlasnie problem jest taki ze nie bardzo wie. O ile pamietam tworzylo ja w katalogu programu, albo \user\AppData. Jutro sprawdze co bylo dokladnie nie tak.

0

Jeżeli to wersja >=2012 to można tak:

select 
    InstanceDefaultDataPath = serverproperty('InstanceDefaultDataPath'),
    InstanceDefaultLogPath = serverproperty('InstanceDefaultLogPath')
0
Usjwo napisał(a):
Juhas napisał(a):

Pytanie jest jeszcze, po co chcesz przekazywać lokalizację bazy danych w Create Database? To polecenie dokładnie wie, gdzie ma utworzyć pliki bazy.

Wlasnie problem jest taki ze nie bardzo wie. O ile pamietam tworzylo ja w katalogu programu, albo \user\AppData. Jutro sprawdze co bylo dokladnie nie tak.

Sprawdzilem, Miales racje :). Dzieki!

string commandSqlCreateDB = "CREATE DATABASE test";

tworzy domyslnie baze w odpowiednim katalogu.
Skad sie wzial problem. Ano zaczalem od d... (drugiej) strony.
Create database ze wszystkimi parametrami. Jak nie bardzo dzialalo jak chcialem, usuwalem kolejne parametry.
Jak zostalo:

string commandSqlCreateDB = "CREATE DATABASE test2 ON PRIMARY (NAMAE = test2_data)"; 

wywalalo blad: File option FILENAME is required in this CREATE/ALTER DATABASE statement.
Jak wywalilem NAME

string commandSqlCreateDB = "CREATE DATABASE test2 ON PRIMARY"; 

To: Invalid statement after PRIMARY
No I tak sie zakopalem, zamiast usunac ON PRIMERY.
Dziekuje wszystkim za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1