2009-10-28 16 views
21

Chcę utworzyć skrypt SQL, który tworzy bazę danych. Teraz, mam to:TWORZENIE BAZY DANYCH przy użyciu pliku w domyślnej ścieżce

CREATE DATABASE [Documents] ON PRIMARY 
(NAME = N'Documents', FILENAME = N'Documents.mdf') 
LOG ON 
(NAME = N'Documents_log', FILENAME = N'Documents_log.ldf') 
COLLATE SQL_Latin1_General_CP1_CI_AS 

Jednak ta generuje następujący błąd:

Msg 5105, Level 16, State 2, Line 2 
A file activation error occurred. The physical file name 'Documents.mdf' may be incorrect. Diagnose and correct additional errors, and retry the operation. 
Msg 1802, Level 16, State 1, Line 2 
CREATE DATABASE failed. Some file names listed could not be created. Check related errors. 

wiem, że problemem jest to, że nie określił pełną ścieżkę do nazw plików. Ale chcę móc uruchomić ten skrypt niezależnie od struktury katalogów serwera bazy danych. Czy jest jakiś sposób na użycie domyślnej ścieżki?

Odpowiedz

20

można utworzyć bazę danych bez określania szczegółów plików, takich jak:

tworzyć bazy danych dokumentów;

+7

To prawda, ale co, jeśli muszę określić dodatkowe atrybuty, takie jak SIZE i FILEGROWTH? Widziałem rozwiązania przy użyciu XP, aby odczytać rejestr, ale co, jeśli nie działa na domyślnej instancji? Ten klucz/wartość rejestru nie dałby prawidłowej odpowiedzi. Ciągle szukam, więc nie uważam tego za odpowiedź sam. –

+6

po utworzeniu bazy danych dodaj skrypt alter bazy danych, aby określić dodatkowe atrybuty, takie jak ROZMIAR i FILEGROWTH. –

1

Zobacz, jak utworzyć Default Path. Sprawdź, czy pomaga Ci to, czego szukasz.

Cheers,

+0

proost !, prost !, santé, salute, salud !, živjeli !, kippis! – Roel

1

wierzę, że można zrobić

CREATE DATABASE [Documents] 

bez ON .... i zostanie on utworzony z domyślnych dla ścieżki i reszta.

51

Utwórz bazę danych "Dokumenty" i nadaj właściwości pliku poprzez zmianę.

USE [master] 
GO 

CREATE DATABASE [Documents] 
GO 

ALTER DATABASE [Documents] MODIFY FILE 
(NAME = N'Documents', SIZE = 512MB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB) 
GO 

ALTER DATABASE [Documents] MODIFY FILE 
(NAME = N'Documents_log', SIZE = 256MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10%) 
GO 

Ten skrypt jest bardziej przenośny i można go wdrożyć na wielu serwerach bez żadnych modyfikacji.

+5

Dla mnie TO jest rozwiązaniem, a nie zaznaczonym. –

3

Zobacz How do I find the data directory for a SQL Server instance?

Jeśli używasz SQL Server 2012 lub nowszy, można znaleźć domyślną ścieżkę korzystając

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

Następnie można użyć exec(), aby zbudować swoją CREATE DATABASE.

Jest to przydatne, jeśli chcesz, aby fizyczne nazwy plików bazy danych różniły się od domyślnej nazwy.

+0

Dzięki. Jak jednak użyć tego w skrypcie CREATE DATABASE? Wykonywanie CREATE DATABASE [Dokumenty] (NAZWA = N'Documents ", FILENAME = @InstanceDefaultDataPath + N'Documents.mdf" ... daje błąd - nie można połączyć wyników zapytania z DB Dame wewnątrz CREATE Skrypt DATABASE – DaveBoltman

Powiązane problemy