Create database - folder docelowy

Create database - folder docelowy
US
  • Rejestracja:ponad 10 lat
  • Ostatnio:9 miesięcy
  • Postów:95
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?

Kopiuj
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?

CW
nie jestem pewny, ale jeżeli podasz tylko nazwę pliku to MSSQL być może domyślnie utworzy pliki w folderze ....\DATA\
US
nie, wtedy probuje tworzyc w C:\
neves
  • Rejestracja:prawie 22 lata
  • Ostatnio:3 dni
  • Lokalizacja:Kraków
  • Postów:1114
1

Zapytaj bazę master o jej lokalizację :)

Kopiuj
SELECT physical_name FROM sys.database_files WHERE type_desc = 'ROWS';

US
Ale ta baza jeszcze nie istniej. Jest tylko stworzona instancja. Znam tylko nazwe instancji
neves
baza test2_data nie istnieje, ale na serwerze masz już cztery bazy systemowe, i się łączysz do bazy 'master'
US
  • Rejestracja:ponad 10 lat
  • Ostatnio:9 miesięcy
  • Postów:95
0
neves napisał(a):

Zapytaj bazę master o jej lokalizację :)

Dziala, dzieki!!

edytowany 1x, ostatnio: Usjwo
GN
Jak działa to oznacza post @neves jako najlepsza odpowiedź ;)
US
A to ten kciuk? Czy ten "check" pod spodem? Czy jeszcze cos innego?
GN
Ten "ptaszek"
JU
  • Rejestracja:około 22 lata
  • Ostatnio:2 miesiące
  • Postów:5042
2

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

US
  • Rejestracja:ponad 10 lat
  • Ostatnio:9 miesięcy
  • Postów:95
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.

edytowany 1x, ostatnio: Usjwo
PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 5 godzin
  • Postów:3876
0

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

Kopiuj
select 
    InstanceDefaultDataPath = serverproperty('InstanceDefaultDataPath'),
    InstanceDefaultLogPath = serverproperty('InstanceDefaultLogPath')
US
  • Rejestracja:ponad 10 lat
  • Ostatnio:9 miesięcy
  • Postów:95
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!

Kopiuj
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:

Kopiuj
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

Kopiuj
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.

edytowany 1x, ostatnio: Usjwo

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.