TWORZENIE BAZY DANYCH
Tworzy nową bazę danych.
Wybierz jedną z poniższych kart składni, argumentów, uwag, uprawnień i przykładów dla określonej wersji sql, z którą pracujesz.
Wybieranie produktu
W poniższym wierszu wybierz nazwę produktu, którą cię interesuje, i zostanie wyświetlona tylko informacja o tym produkcie.
* SQL Server *
usługi
usługi
Azure Synapse
analizy
SQL Server
Przegląd
W programie SQL Server ta instrukcja tworzy nową bazę danych i używane pliki oraz ich grupy plików. Może również służyć do tworzenia migawki bazy danych lub dołączania plików bazy danych w celu utworzenia bazy danych z odłączonych plików innej bazy danych.
Składnia
Utwórz bazę danych.
Aby uzyskać więcej informacji na temat konwencji składni, zobacz Transact-SQL konwencje składni.
CREATE DATABASE database_name
[ CONTAINMENT = { NONE | PARTIAL } ]
[ ON
[ PRIMARY ] <filespec> [ ,...n ]
[ , <filegroup> [ ,...n ] ]
[ LOG ON <filespec> [ ,...n ] ]
]
[ COLLATE collation_name ]
[ WITH <option> [,...n ] ]
[;]
<option> ::=
{
FILESTREAM ( <filestream_option> [,...n ] )
| DEFAULT_FULLTEXT_LANGUAGE = { lcid | language_name | language_alias }
| DEFAULT_LANGUAGE = { lcid | language_name | language_alias }
| NESTED_TRIGGERS = { OFF | ON }
| TRANSFORM_NOISE_WORDS = { OFF | ON }
| TWO_DIGIT_YEAR_CUTOFF = <two_digit_year_cutoff>
| DB_CHAINING { OFF | ON }
| TRUSTWORTHY { OFF | ON }
| PERSISTENT_LOG_BUFFER=ON ( DIRECTORY_NAME='path-to-directory-on-a-DAX-volume' )
| LEDGER = {ON | OFF }
}
<filestream_option> ::=
{
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
| DIRECTORY_NAME = 'directory_name'
}
<filespec> ::=
{
(
NAME = logical_file_name ,
FILENAME = { 'os_file_name' | 'filestream_path' }
[ , SIZE = size [ KB | MB | GB | TB ] ]
[ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
[ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]
)
}
<filegroup> ::=
{
FILEGROUP filegroup name [ [ CONTAINS FILESTREAM ] [ DEFAULT ] | CONTAINS MEMORY_OPTIMIZED_DATA ]
<filespec> [ ,...n ]
}
Dołączanie bazy danych
CREATE DATABASE database_name
ON <filespec> [ ,...n ]
FOR { { ATTACH [ WITH <attach_database_option> [ , ...n ] ] }
| ATTACH_REBUILD_LOG }
[;]
<attach_database_option> ::=
{
<service_broker_option>
| RESTRICTED_USER
| FILESTREAM ( DIRECTORY_NAME = { 'directory_name' | NULL } )
}
<service_broker_option> ::=
{
ENABLE_BROKER
| NEW_BROKER
| ERROR_BROKER_CONVERSATIONS
}
Tworzenie migawki bazy danych
CREATE DATABASE database_snapshot_name
ON
(
NAME = logical_file_name,
FILENAME = 'os_file_name'
) [ ,...n ]
AS SNAPSHOT OF
[;]
Argumenty
database_name
Jest to nazwa nowej bazy danych. Nazwy baz danych muszą być unikatowe w wystąpieniu programu SQL Server i być zgodne z regułami dotyczącymi identyfikatorów .
database_name może zawierać maksymalnie 128 znaków, chyba że nie określono nazwy logicznej dla pliku dziennika. Jeśli nie określono nazwy pliku dziennika logicznego, program SQL Server generuje logical_file_name i os_file_name dla dziennika, dołączając sufiks do database_name. Ogranicza to database_name do 123 znaków, tak aby wygenerowana nazwa pliku logicznego nie przekraczała 128 znaków.
Jeśli nie określono nazwy pliku danych, program SQL Server używa database_name zarówno jako logical_file_name, jak i jako os_file_name. Ścieżka domyślna jest uzyskiwana z rejestru. Ścieżkę domyślną można zmienić w w programie Management Studio właściwości serwera
ZAWIERANIE = { NONE | CZĘŚCIOWE }
Dotyczy: SQL Server 2012 (11.x) i nowszych
Określa stan zawierania bazy danych. NONE = nieuwzwiązana baza danych. PARTIAL = częściowo zawarta baza danych.
NA
Określa, że pliki dysku używane do przechowywania sekcji danych bazy danych, plików danych są jawnie zdefiniowane. Wł. jest wymagany, gdy następuje rozdzielana przecinkami lista <plikówpec> elementów definiujących pliki danych dla podstawowej grupy plików. Lista plików w podstawowej grupie plików może zawierać opcjonalną, rozdzielaną przecinkami listę elementów <filegroup> definiujących grupy plików użytkowników i ich plików.
PODSTAWOWY
Określa, że skojarzona lista plików <> definiuje plik podstawowy. Pierwszy plik określony w <plikpec> wpis w podstawowej grupie plików staje się plikiem podstawowym. Baza danych może mieć tylko jeden plik podstawowy. Aby uzyskać więcej informacji, zobacz Database Files and Filegroups.
Jeśli nie określono parametru PRIMARY, pierwszy plik wymieniony w instrukcji CREATE DATABASE staje się plikiem podstawowym.
LOGOWANIE
Określa, że pliki dysku używane do przechowywania dziennika bazy danych, plików dziennika są jawnie zdefiniowane. Po logowaniu następuje rozdzielona przecinkami lista <plikówpec> elementów definiujących pliki dziennika. Jeśli logowanie nie zostanie określone, zostanie automatycznie utworzony jeden plik dziennika, który ma rozmiar 25 procent sumy wszystkich plików danych dla bazy danych lub 512 KB, w zależności od tego, która z nich jest większa. Ten plik jest umieszczany w domyślnej lokalizacji pliku dziennika. Aby uzyskać informacje o tej lokalizacji, zobacz
Nie można określić logowania w migawki bazy danych.
SORTOWANIE collation_name
Określa sortowanie domyślne dla bazy danych. Nazwa sortowania może być nazwą sortowania systemu Windows lub nazwą sortowania SQL. Jeśli nie zostanie określona, baza danych zostanie przypisana do domyślnego sortowania wystąpienia programu SQL Server. Nie można określić nazwy sortowania w migawki bazy danych.
Nie można określić nazwy sortowania z klauzulami FOR ATTACH lub FOR ATTACH_REBUILD_LOG. Aby uzyskać informacje na temat zmiany sortowania dołączonej bazy danych, odwiedź tę witrynę witrynę sieci Web firmy Microsoft.
Aby uzyskać więcej informacji na temat nazw sortowania systemu Windows i SQL, zobacz COLLATE.
Nuta
Zawarte bazy danych są sortowane inaczej niż nieuwzwiązane bazy danych. Aby uzyskać więcej informacji, zobacz zawarte sortowania baz danych.
Z opcją <>
<filestream_option>
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | PEŁNY }
Dotyczy: SQL Server 2012 (11.x) i nowsze.
Określa poziom nie transakcyjnego dostępu FILESTREAM do bazy danych.
Wartość | Opis |
---|---|
OFF |
Dostęp nie transakcyjny jest wyłączony. |
READONLY |
Dane FILESTREAM w tej bazie danych mogą być odczytywane przez procesy nie transakcyjne. |
FULL |
Pełny nie transakcyjny dostęp do plików FILESTREAM FileTables jest włączony. |
DIRECTORY_NAME = <directory_name>
Dotyczy: SQL Server 2012 (11.x) i nowszych
Nazwa katalogu zgodnego z systemem Windows. Ta nazwa powinna być unikatowa wśród wszystkich nazw Database_Directory w wystąpieniu programu SQL Server. Porównanie unikatowości jest niewrażliwe na wielkość liter, niezależnie od ustawień sortowania programu SQL Server. Ta opcja powinna zostać ustawiona przed utworzeniem tabeli FileTable w tej bazie danych.
Poniższe opcje są dozwolone tylko wtedy, gdy właściwość CONTAINMENT została ustawiona na WARTOŚĆ PARTIAL. Jeśli właściwość CONTAINMENT jest ustawiona na NONE, wystąpią błędy.
DEFAULT_FULLTEXT_LANGUAGE = <> lcid | <nazwa języka> | alias języka <>
Dotyczy: SQL Server 2012 (11.x) i nowszych
Zobacz Konfigurowanie domyślnej opcji konfiguracji serwera pełnotekstowego, aby uzyskać pełny opis tej opcji.
DEFAULT_LANGUAGE = <> lcid | <nazwa języka> | alias języka <>
Dotyczy: SQL Server 2012 (11.x) i nowszych
Zobacz Skonfiguruj domyślną opcję konfiguracji serwera języka, aby uzyskać pełny opis tej opcji.
NESTED_TRIGGERS = { OFF | WŁ. }
Dotyczy: SQL Server 2012 (11.x) i nowszych
Zobacz Konfigurowanie zagnieżdżonych wyzwalaczy Opcji konfiguracji serwera, aby uzyskać pełny opis tej opcji.
TRANSFORM_NOISE_WORDS = { OFF | WŁ. }
Dotyczy: SQL Server 2012 (11.x) i nowszych
Aby uzyskać pełny opis tej opcji, zobacz przekształć wyrazy szumu. Opcja konfiguracji serwera.
TWO_DIGIT_YEAR_CUTOFF = { 2049 | <w każdym roku między 1753 a 9999> }
Cztery cyfry reprezentujące rok. Wartość domyślna to 2049. Aby uzyskać pełny opis tej opcji, zobacz Configure the two digit year cutoff Server Configuration Option (Konfigurowanie opcji konfiguracji serwera dwucyfrowego w roku).
DB_CHAINING { OFF | WŁ. }
Po określeniu pozycji WŁĄCZONE baza danych może być źródłem lub elementem docelowym łańcucha własności między bazami danych.
W przypadku wyłączenia baza danych nie może uczestniczyć w łańcuchu własności między bazami danych. Wartość domyślna to WYŁĄCZONE.
Ważny
Wystąpienie programu SQL Server rozpozna to ustawienie, gdy opcja serwera łańcucha własności między bazami danych ma wartość 0 (OFF). Gdy łańcuch własności między bazami danych wynosi 1 (WŁ.), wszystkie bazy danych użytkowników mogą uczestniczyć w łańcuchach własności między bazami danych, niezależnie od wartości tej opcji. Ta opcja jest ustawiana przy użyciu sp_configure.
Aby ustawić tę opcję, wymaga członkostwa w stałej roli serwera sysadmin. Nie można ustawić opcji DB_CHAINING dla następujących systemowych baz danych: master
, model
, tempdb
.
GODNE ZAUFANIA { WYŁĄCZONE | WŁ. }
Po określeniu pozycji WŁĄCZONE moduły bazy danych (na przykład widoki, funkcje zdefiniowane przez użytkownika lub procedury składowane), które używają kontekstu personifikacji, mogą uzyskiwać dostęp do zasobów spoza bazy danych.
W przypadku wyłączenia moduły bazy danych w kontekście personifikacji nie mogą uzyskać dostępu do zasobów spoza bazy danych. Wartość domyślna to WYŁĄCZONE.
WARTOŚĆ TRUSTWORTHY jest ustawiona na WARTOŚĆ OFF za każdym razem, gdy baza danych jest dołączona.
Domyślnie wszystkie systemowe bazy danych z wyjątkiem bazy danych msdb
mają wartość TRUSTWORTHY ustawioną na WARTOŚĆ OFF. Nie można zmienić wartości dla baz danych model
i tempdb
. Zalecamy, aby dla bazy danych master
nigdy nie ustawić opcji GODNE ZAUFANIA.
PERSISTENT_LOG_BUFFER=ON ( DIRECTORY_NAME='' )
Dotyczy: SQL Server 2017 (14.x) i nowszych.
Po określeniu tej opcji bufor dziennika transakcji jest tworzony na woluminie, który znajduje się na urządzeniu dyskowym wspieranym przez pamięć klasy magazynu (NVDIMM-N magazynu nieulotnego), znany również jako trwały bufor dziennika. Aby uzyskać więcej informacji, zobacz przyspieszanie opóźnienia zatwierdzania transakcji przy użyciu pamięci klasy magazynu i Dodawanie buforu dziennika trwałego do bazy danych.
LEDGER = {ON | WYŁ. }
Po ustawieniu wartości na ON
program tworzy bazę danych rejestru, w której jest chroniona integralność wszystkich danych użytkownika. W bazie danych rejestru można tworzyć tylko tabele rejestru. Wartość domyślna to OFF
. Nie można zmienić wartości opcji LEDGER
po utworzeniu bazy danych. Aby uzyskać więcej informacji, zobacz Konfigurowanie bazy danych rejestru.
UTWÓRZ BAZĘ DANYCH... DO DOŁĄCZANIA [ Z < attach_database_option > ]
Określa, że baza danych jest tworzona przez dołączanie istniejącego zestawu plików systemu operacyjnego. Musi istnieć <plikpec> wpis określający plik podstawowy. Jedynymi innymi wpisami <filespec> są wymagane dla wszystkich plików, które mają inną ścieżkę od momentu utworzenia bazy danych lub ostatniego dołączeniu. Dla tych plików należy określić wpis <filespec>.
W przypadku dołączania wymagane są następujące elementy:
- Wszystkie pliki danych (MDF i NDF) muszą być dostępne.
- Jeśli istnieje wiele plików dziennika, muszą być dostępne.
Jeśli baza danych odczytu/zapisu ma jeden plik dziennika, który jest obecnie niedostępny, a baza danych została zamknięta bez użytkowników lub otwartych transakcji przed operacją ATTACH
, FOR ATTACH
automatycznie ponownie kompiluje plik dziennika i aktualizuje plik podstawowy. Z kolei w przypadku bazy danych tylko do odczytu nie można ponownie skompilować dziennika, ponieważ nie można zaktualizować pliku podstawowego. W związku z tym w przypadku dołączania bazy danych tylko do odczytu z dziennikiem, który jest niedostępny, należy podać pliki dziennika lub pliki w klauzuli FOR ATTACH.
Nuta
Nie można dołączyć bazy danych utworzonej przez najnowszą wersję programu SQL Server we wcześniejszych wersjach.
W programie SQL Server wszystkie pliki pełnotekstowe, które są częścią dołączonej bazy danych, zostaną dołączone do bazy danych. Aby określić nową ścieżkę wykazu pełnotekstowego, określ nową lokalizację bez pełnej nazwy pliku systemu operacyjnego. Aby uzyskać więcej informacji, zobacz sekcję Przykłady.
Dołączenie bazy danych zawierającej opcję FILESTREAM "Nazwa katalogu" do wystąpienia programu SQL Server spowoduje wyświetlenie monitu programu SQL Server o sprawdzenie, czy nazwa Database_Directory jest unikatowa. Jeśli tak nie jest, operacja ATTACH
kończy się niepowodzeniem z powodu błędu, FILESTREAM Database_Directory name is not unique in this SQL Server instance
. Aby uniknąć tego błędu, opcjonalny parametr directory_namenależy przekazać do tej operacji.
Nie można określić funkcji ATTACH dla migawki bazy danych.
W polu ATTACH można określić opcję RESTRICTED_USER. RESTRICTED_USER umożliwia nawiązywanie połączenia z bazą danych tylko członkom db_owner stałej roli bazy danych oraz stałych ról serwera dbcreator i sysadmin, ale nie ogranicza ich liczby. Próby niekwalifikowanych użytkowników są odrzucane.
<service_broker_option>
Jeśli baza danych używa usługi Service Broker, użyj <service_broker_option> WITH w klauzuli FOR ATTACH:
Steruje dostarczaniem komunikatów usługi Service Broker i identyfikatorem usługi Service Broker dla bazy danych. Opcje usługi Service Broker można określić tylko wtedy, gdy jest używana klauzula FOR ATTACH.
ENABLE_BROKER
Określa, że usługa Service Broker jest włączona dla określonej bazy danych. Oznacza to, że dostarczanie komunikatów jest uruchamiane, a is_broker_enabled
jest ustawiona na wartość true w widoku wykazu sys.databases
. Baza danych zachowuje istniejący identyfikator usługi Service Broker.
NEW_BROKER
Tworzy nową wartość service_broker_guid
zarówno w sys.databases
, jak i w przywróconej bazie danych. Kończy wszystkie punkty końcowe konwersacji z czyszczeniem. Broker jest włączony, ale żaden komunikat nie jest wysyłany do zdalnych punktów końcowych konwersacji. Każda trasa odwołująca się do starego identyfikatora usługi Service Broker musi zostać ponownie utworzona przy użyciu nowego identyfikatora.
ERROR_BROKER_CONVERSATIONS
Kończy wszystkie konwersacje z błędem informującym, że baza danych jest dołączona lub przywrócona. Broker jest wyłączony do momentu ukończenia tej operacji, a następnie włączonej. Baza danych zachowuje istniejący identyfikator usługi Service Broker.
Podczas dołączania replikowanej bazy danych, która została skopiowana zamiast odłączania, rozważ następujące kwestie:
- Jeśli dołączysz bazę danych do tego samego wystąpienia serwera i wersji co oryginalna baza danych, nie są wymagane żadne dodatkowe kroki.
- Jeśli dołączysz bazę danych do tego samego wystąpienia serwera, ale z uaktualnioną wersją, musisz wykonać sp_vupgrade_replication, aby uaktualnić replikację po zakończeniu operacji dołączania.
- Jeśli baza danych zostanie dołączona do innego wystąpienia serwera, niezależnie od wersji, należy wykonać sp_removedbreplication, aby usunąć replikację po zakończeniu operacji dołączania.
Nuta
Dołączanie działa z formatem magazynu vardecimal, ale aparat bazy danych programu SQL Server musi zostać uaktualniony do co najmniej programu SQL Server 2005 (9.x) z dodatkiem SP2. Nie można dołączyć bazy danych przy użyciu formatu magazynu vardecimal do starszej wersji programu SQL Server. Aby uzyskać więcej informacji na temat formatu magazynu vardecimal, zobacz Data Compression.
Gdy baza danych jest najpierw dołączona lub przywrócona do nowego wystąpienia programu SQL Server, kopia klucza głównego bazy danych (zaszyfrowana za pomocą klucza głównego usługi) nie jest jeszcze przechowywana na serwerze. Należy użyć instrukcji OPEN MASTER KEY
, aby odszyfrować klucz główny bazy danych (DMK). Po odszyfrowaniu klucza DMK można włączyć automatyczne odszyfrowywanie w przyszłości przy użyciu instrukcji ALTER MASTER KEY REGENERATE
aprowizacji serwera z kopią klucza DMK zaszyfrowanego przy użyciu klucza głównego usługi (SMK). Gdy baza danych została uaktualniona z wcześniejszej wersji, klucz DMK powinien zostać wygenerowany ponownie, aby użyć nowszego algorytmu AES. Aby uzyskać więcej informacji na temat ponownego generowania zestawu DMK, zobacz ALTER MASTER KEY. Czas wymagany do ponownego wygenerowania klucza DMK do uaktualnienia do usługi AES zależy od liczby obiektów chronionych przez klucz DMK. Ponowne generowanie klucza DMK w celu uaktualnienia do AES jest konieczne tylko raz i nie ma wpływu na przyszłe ponowne generowanie w ramach strategii rotacji kluczy. Aby uzyskać informacje o sposobie uaktualniania bazy danych przy użyciu dołączania, zobacz Uaktualnianie bazy danych przy użyciu odłączania i dołączania.
Ważny
Zalecamy, aby nie dołączać baz danych z nieznanych lub niezaufanych źródeł. Takie bazy danych mogą zawierać złośliwy kod, który może wykonywać niezamierzony kod Transact-SQL lub powodować błędy, modyfikując schemat lub fizyczną strukturę bazy danych. Przed użyciem bazy danych z nieznanego lub niezaufanego źródła uruchom DBCC CHECKDB w bazie danych na serwerze nieprodukcyjnym, a także sprawdź kod, taki jak procedury składowane lub inny kod zdefiniowany przez użytkownika, w bazie danych.
Nuta
Opcje GODNE ZAUFANIA i DB_CHAINING nie mają wpływu podczas dołączania bazy danych.
FOR ATTACH_REBUILD_LOG
Określa, że baza danych jest tworzona przez dołączenie istniejącego zestawu plików systemu operacyjnego. Ta opcja jest ograniczona do odczytu/zapisu baz danych. Musi istnieć wpis <filespec> określający plik podstawowy. Jeśli brakuje co najmniej jednego pliku dziennika transakcji, plik dziennika zostanie ponownie skompilowany. ATTACH_REBUILD_LOG automatycznie tworzy nowy, 1 MB pliku dziennika. Ten plik jest umieszczany w domyślnej lokalizacji pliku dziennika. Aby uzyskać informacje o tej lokalizacji, zobacz
Nuta
Jeśli pliki dziennika są dostępne, aparat bazy danych używa tych plików zamiast odbudowywać pliki dziennika.
W przypadku ATTACH_REBUILD_LOG wymagane są następujące warunki:
- Czyste zamknięcie bazy danych.
- Wszystkie pliki danych (MDF i NDF) muszą być dostępne.
Ważny
Ta operacja powoduje przerwanie łańcucha kopii zapasowych dziennika. Zalecamy wykonanie pełnej kopii zapasowej bazy danych po zakończeniu operacji. Aby uzyskać więcej informacji, zobacz BACKUP.
Zazwyczaj funkcja FOR ATTACH_REBUILD_LOG jest używana podczas kopiowania bazy danych odczytu/zapisu z dużym dziennikiem na inny serwer, na którym kopia będzie używana głównie lub tylko w przypadku operacji odczytu, a w związku z tym wymaga mniej miejsca w dzienniku niż oryginalna baza danych.
Nie można określić ATTACH_REBUILD_LOG dla migawki bazy danych.
Aby uzyskać więcej informacji na temat dołączania i odłączania baz danych, zobacz Database Detach and Attach.
<filespec>
Steruje właściwościami pliku.
LOGICAL_FILE_NAME NAZW
Określa nazwę logiczną pliku. Nazwa jest wymagana, gdy określono nazwę PLIKU, z wyjątkiem określenia jednej z klauzul FOR ATTACH. Grupa plików FILESTREAM nie może mieć nazwy PRIMARY.
logical_file_name
To nazwa logiczna używana w programie SQL Server podczas odwoływania się do pliku. Logical_file_name musi być unikatowa w bazie danych i być zgodna z regułami dotyczącymi identyfikatorów . Nazwa może być znakiem lub stałą Unicode albo zwykłym lub rozdzielonym identyfikatorem.
NAZWA PLIKU { 'os_file_name' | 'filestream_path' }
Określa nazwę pliku systemu operacyjnego (fizycznego).
To ścieżka i nazwa pliku używana przez system operacyjny podczas tworzenia pliku. Plik musi znajdować się na jednym z następujących urządzeń: na serwerze lokalnym, na którym jest zainstalowany program SQL Server, sieci magazynowania [SAN] lub sieci opartej na protokole iSCSI. Określona ścieżka musi istnieć przed wykonaniem instrukcji CREATE DATABASE. Aby uzyskać więcej informacji, zobacz Pliki bazy danych i grupy plików w dalszej części tego artykułu.
Parametry SIZE, MAXSIZE i FILEGROWTH można ustawić, gdy dla pliku określono ścieżkę UNC.
Jeśli plik znajduje się na partycji pierwotnej, os_file_name musi określić tylko literę dysku istniejącej partycji pierwotnej. Na każdej partycji pierwotnej można utworzyć tylko jeden plik danych.
Nuta
Partycje pierwotne nie są obsługiwane w programie SQL Server 2014 i nowszych wersjach.
Pliki danych nie powinny być umieszczane w skompresowanych systemach plików, chyba że pliki są plikami pomocniczymi tylko do odczytu lub baza danych jest tylko do odczytu. Pliki dziennika nigdy nie powinny być umieszczane w skompresowanych systemach plików.
W przypadku grupy plików FILESTREAM nazwa PLIKU odwołuje się do ścieżki, w której będą przechowywane dane FILESTREAM. Ścieżka do ostatniego folderu musi istnieć, a ostatni folder nie może istnieć. Jeśli na przykład określisz ścieżkę C:\MyFiles\MyFilestreamData
, C:\MyFiles
musi istnieć przed uruchomieniem polecenia ALTER DATABASE, ale folder MyFilestreamData
nie może istnieć.
Grupa plików i plik (<filespec>
) muszą zostać utworzone w tej samej instrukcji.
Właściwości SIZE i FILEGROWTH nie mają zastosowania do grupy plików FILESTREAM.
Rozmiar
Określa rozmiar pliku.
Nie można określić rozmiaru, gdy os_file_name jest określona jako ścieżka UNC. ROZMIAR nie ma zastosowania do grupy plików FILESTREAM.
rozmiar
Jest początkowym rozmiarem pliku.
Jeśli rozmiar nie zostanie podany dla pliku podstawowego, aparat bazy danych używa rozmiaru pliku podstawowego w bazie danych model
. Domyślny rozmiar bazy danych model
wynosi 8 MB (począwszy od programu SQL Server 2016 (13.x)) lub 1 MB (w przypadku wcześniejszych wersji). Jeśli określono pomocniczy plik danych lub plik dziennika, ale rozmiar nie jest określony dla pliku, aparat bazy danych tworzy plik 8 MB (począwszy od programu SQL Server 2016 (13.x)) lub 1 MB (w przypadku wcześniejszych wersji). Rozmiar określony dla pliku podstawowego musi być co najmniej tak duży, jak plik podstawowy bazy danych model
.
Można użyć sufiksów kilobajtów (KB), megabajtów (MB), gigabajtów (GB) lub terabajtów (TB). Wartość domyślna to MB. Określ liczbę całkowitą. Nie dołączaj liczby dziesiętnej. Size jest wartością całkowitą. W przypadku wartości większych niż 2147483647 użyj większych jednostek.
MAX_SIZE MAXSIZE
Określa maksymalny rozmiar, do którego można zwiększyć plik. Nie można określić parametru MAXSIZE, gdy os_file_name jest określona jako ścieżka UNC.
max_size
Jest maksymalnym rozmiarem pliku. Można użyć sufiksów KB, MB, GB i TB. Wartość domyślna to MB. Określ liczbę całkowitą. Nie dołączaj liczby dziesiętnej. Jeśli max_size nie zostanie określony, plik rośnie do momentu zapełnienia dysku. Max_size jest wartością całkowitą. W przypadku wartości większych niż 2147483647 użyj większych jednostek.
NIEOGRANICZONY
Określa, że plik rośnie do momentu zapełnienia dysku. W programie SQL Server plik dziennika określony z nieograniczonym wzrostem ma maksymalny rozmiar 2 TB, a plik danych ma maksymalny rozmiar 16 TB.
Nuta
Nie ma maksymalnego rozmiaru, jeśli ta opcja jest określona dla kontenera FILESTREAM. Nadal rośnie, dopóki dysk nie zostanie zapełniony.
FILEGROWTH growth_increment
Określa automatyczny przyrost wzrostu pliku. Ustawienie FILEGROWTH dla pliku nie może przekraczać ustawienia MAXSIZE. Nie można określić parametru FILEGROWTH, gdy os_file_name jest określona jako ścieżka UNC. FILEGROWTH nie ma zastosowania do grupy plików FILESTREAM.
growth_increment
Czy ilość miejsca dodawanego do pliku za każdym razem, gdy jest wymagane nowe miejsce.
Wartość można określić w MB, KB, GB, TB lub procent (%). Jeśli liczba jest określona bez sufiksu MB, KB lub %, wartość domyślna to MB. Po określeniu % rozmiar przyrostu jest określoną wartością procentową rozmiaru pliku w momencie wystąpienia przyrostu. Określony rozmiar jest zaokrąglany do najbliższego 64 KB, a minimalna wartość to 64 KB.
Wartość 0 wskazuje, że automatyczny wzrost jest wyłączony i nie jest dozwolone żadne dodatkowe miejsce.
Jeśli nie określono wartości FILEGROWTH, wartości domyślne to:
Wersja | Wartości domyślne |
---|---|
Począwszy od programu SQL Server 2016 (13.x) | Dane 64 MB. Pliki dziennika 64 MB. |
Począwszy od programu SQL Server 2005 (9.x) | Dane 1 MB. Pliki dziennika 10%. |
Przed programem SQL Server 2005 (9.x) | Dane 10%. Pliki dziennika 10%. |
< grupy plików >
Steruje właściwościami grupy plików. Nie można określić grupy plików w migawki bazy danych.
FILEGROUP_NAME FILEGROUP
Jest logiczną nazwą grupy plików.
filegroup_name
filegroup_name musi być unikatowa w bazie danych i nie może być nazwami podstawowymi i PRIMARY_LOG. Nazwa może być znakiem lub stałą Unicode albo zwykłym lub rozdzielonym identyfikatorem. Nazwa musi być zgodna z regułami dotyczącymi identyfikatorów .
ZAWIERA PLIKSTREAM
Określa, że grupa plików przechowuje pliki FILESTREAM binarnych dużych obiektów (BLOB) w systemie plików.
DOMYŚLNY
Określa nazwaną grupę plików jest domyślną grupą plików w bazie danych.
ZAWIERA MEMORY_OPTIMIZED_DATA
Dotyczy: SQL Server 2014 (12.x) i nowsze
Określa, że grupa plików przechowuje memory_optimized danych w systemie plików. Aby uzyskać więcej informacji, zobacz omówienie optymalizacji In-Memory i scenariusze użycia. Tylko jedna grupa plików MEMORY_OPTIMIZED_DATA jest dozwolona dla każdej bazy danych. Przykłady kodu, które tworzą grupę plików do przechowywania danych zoptymalizowanych pod kątem pamięci, zobacz Creating a Memory-Optimized Table (Tworzenie tabeli Memory-Optimized) i natywnie skompilowaną procedurę składowaną.
database_snapshot_name
To nazwa nowej migawki bazy danych. Nazwy migawek bazy danych muszą być unikatowe w wystąpieniu programu SQL Server i być zgodne z regułami dotyczącymi identyfikatorów. database_snapshot_name może mieć maksymalnie 128 znaków.
ON ( NAME =logical_file_name, NAZWA PLIKU ='os_file_name') [ ,... n ]
W przypadku tworzenia migawki bazy danych określa listę plików w źródłowej bazie danych. Aby migawka działała, wszystkie pliki danych muszą być określone indywidualnie. Jednak pliki dziennika nie są dozwolone w przypadku migawek bazy danych. Grupy plików FILESTREAM nie są obsługiwane przez migawki bazy danych. Jeśli plik danych FILESTREAM jest zawarty w klauzuli CREATE DATABASE ON, instrukcja zakończy się niepowodzeniem i zostanie zgłoszony błąd.
Opisy nazw i nazwy pliku oraz ich wartości można znaleźć w opisach równoważnych wartości <filespec>.
Nuta
Podczas tworzenia migawki bazy danych inne <plikipec> opcje i słowo kluczowe PRIMARY są niedozwolone.
JAKO MIGAWKA source_database_name
Określa, że tworzona baza danych jest migawką bazy danych źródłowej określonej przez source_database_name. Migawka i źródłowa baza danych muszą znajdować się w tym samym wystąpieniu.
Przed programem SQL Server 2019 źródłowa baza danych migawki bazy danych nie może zawierać MEMORY_OPTIMIZED_DATA grupy plików. Dodano obsługę migawek bazy danych w pamięci w programie SQL Server 2019.
Aby uzyskać więcej informacji, zobacz Database Snapshots.
Uwagi
Kopia zapasowa master database powinna być tworzona za każdym razem, gdy baza danych użytkownika zostanie utworzona, zmodyfikowana lub porzucona.
Instrukcja CREATE DATABASE
musi działać w trybie automatycznego zatwierdzania (domyślny tryb zarządzania transakcjami) i nie jest dozwolona w jawnej lub niejawnej transakcji.
Możesz użyć jednej instrukcji CREATE DATABASE
, aby utworzyć bazę danych i pliki, które przechowują bazę danych. Program SQL Server implementuje instrukcję CREATE DATABASE, wykonując następujące kroki:
- Program SQL Server używa kopii modelowej bazy danych do inicjowania bazy danych i jej metadanych.
- Identyfikator GUID brokera usług jest przypisywany do bazy danych.
- Aparat bazy danych wypełnia pozostałą część bazy danych pustymi stronami, z wyjątkiem stron, które zawierają dane wewnętrzne, które rejestrują sposób użycia miejsca w bazie danych.
W wystąpieniu programu SQL Server można określić maksymalnie 32 767 baz danych.
Każda baza danych ma właściciela, który może wykonywać specjalne działania w bazie danych. Właścicielem jest użytkownik, który tworzy bazę danych. Właściciel bazy danych można zmienić przy użyciu ALTER AUTHORIZATION.
Niektóre funkcje bazy danych zależą od funkcji lub możliwości dostępnych w systemie plików w celu zapewnienia pełnej funkcjonalności bazy danych. Oto kilka przykładów funkcji, które zależą od zestawu funkcji systemu plików:
- DBCC CHECKDB
- FileStream
- Kopie zapasowe online przy użyciu usługi VSS i migawek plików
- Tworzenie migawki bazy danych
- Grupa plików danych zoptymalizowana pod kątem pamięci
Pliki bazy danych i grupy plików
Każda baza danych ma co najmniej dwa pliki, plik podstawowy i plik dziennika transakcji i co najmniej jedną grupę plików. Dla każdej bazy danych można określić maksymalnie 32 767 plików i 32 767 grup plików.
Podczas tworzenia bazy danych należy jak najwięcej plików danych w oparciu o maksymalną oczekiwaną ilość danych w bazie danych.
Zalecamy użycie sieci magazynowania (SAN), sieci opartej na protokole iSCSI lub lokalnie dołączonego dysku do przechowywania plików bazy danych programu SQL Server, ponieważ ta konfiguracja optymalizuje wydajność i niezawodność programu SQL Server.
Migawki bazy danych
Możesz użyć instrukcji CREATE DATABASE
, aby utworzyć widok statyczny tylko do odczytu, migawkę bazy danych źródłowej bazy danych . Migawka bazy danych jest transakcyjnie zgodna z źródłową bazą danych, ponieważ istniała w momencie utworzenia migawki. Źródłowa baza danych może zawierać wiele migawek.
Nuta
Podczas tworzenia migawki bazy danych instrukcja CREATE DATABASE
nie może odwoływać się do plików dziennika, plików offline, przywracania plików i nieistniejących plików.
Jeśli tworzenie migawki bazy danych zakończy się niepowodzeniem, migawka stanie się podejrzana i musi zostać usunięta. Aby uzyskać więcej informacji, zobacz DROP DATABASE.
Każda migawka będzie się powtarzać, dopóki nie zostanie usunięta przy użyciu DROP DATABASE
.
Aby uzyskać więcej informacji, zobacz Database Snapshots i Create a database snapshot (Transact-SQL).
Opcje bazy danych
Kilka opcji bazy danych jest ustawianych automatycznie za każdym razem, gdy tworzysz bazę danych. Aby uzyskać listę tych opcji, zobacz ALTER DATABASE SET Options.
Modelowa baza danych i tworzenie nowych baz danych
Wszystkie obiekty zdefiniowane przez użytkownika w bazie danych modelu są kopiowane do wszystkich nowo utworzonych baz danych. Do bazy danych model
można dodawać dowolne obiekty, takie jak tabele, widoki, procedury składowane, typy danych itd., do bazy danych model
, które mają zostać uwzględnione we wszystkich nowo utworzonych bazach danych.
W przypadku określenia instrukcji CREATE DATABASE <database_name>
bez dodatkowych parametrów rozmiaru plik danych podstawowych jest taki sam jak plik podstawowy w bazie danych model
.
O ile nie określono FOR ATTACH
, każda nowa baza danych dziedziczy ustawienia opcji bazy danych z bazy danych model
. Na przykład opcja bazy danych automatyczne zmniejszanie jest ustawiona na true w model
i w wszelkich nowych bazach danych. Jeśli zmienisz opcje w bazie danych model
, te nowe ustawienia opcji będą używane w nowych bazach danych. Zmiana operacji w bazie danych model
nie ma wpływu na istniejące bazy danych. Jeśli opcja FOR ATTACH jest określona w instrukcji CREATE DATABASE, nowa baza danych dziedziczy ustawienia opcji bazy danych oryginalnej bazy danych.
Wyświetlanie informacji o bazie danych
Widoki wykazu, funkcje systemowe i procedury składowane systemu umożliwiają zwracanie informacji o bazach danych, plikach i grupach plików. Aby uzyskać więcej informacji, zobacz Widoki systemowe.
Uprawnienia
Wymaga uprawnień CREATE DATABASE
, CREATE ANY DATABASE
lub ALTER ANY DATABASE
.
Aby zachować kontrolę nad użyciem dysku w wystąpieniu programu SQL Server, uprawnienia do tworzenia baz danych są zwykle ograniczone do kilku logowań.
W poniższym przykładzie przedstawiono uprawnienia do tworzenia bazy danych dla użytkownika bazy danych Fay
.
USE master;
GO
GRANT CREATE DATABASE TO [Fay];
GO
Uprawnienia do plików danych i dzienników
W programie SQL Server niektóre uprawnienia są ustawiane na plikach danych i dziennika każdej bazy danych. Następujące uprawnienia są ustawiane za każdym razem, gdy do bazy danych są stosowane następujące operacje:
- Przywiązany
- Kopia zapasowa
- Utworzono
- Odłączony
- Zmodyfikowano w celu dodania nowego pliku
- Przywrócone
Uprawnienia uniemożliwiają przypadkowe manipulowanie plikami, jeśli znajdują się w katalogu z otwartymi uprawnieniami.
Nuta
Wersja Microsoft SQL Server 2005 Express nie ustawia uprawnień do plików danych i dziennika.
Przykłady
A. Tworzenie bazy danych bez określania plików
Poniższy przykład tworzy bazę danych mytest
i tworzy odpowiedni plik dziennika podstawowego i transakcyjnego. Ponieważ instrukcja nie ma <plikówpec> elementów, podstawowy plik bazy danych jest rozmiarem pliku podstawowego bazy danych model
. Dziennik transakcji jest ustawiony na większe z następujących wartości: 512 KB lub 25% rozmiar pliku danych podstawowych. Ponieważ parametr MAXSIZE nie jest określony, pliki mogą rosnąć, aby wypełnić wszystkie dostępne miejsce na dysku. W tym przykładzie pokazano również, jak usunąć bazę danych o nazwie mytest
, jeśli istnieje, przed utworzeniem bazy danych mytest
.
USE master;
GO
IF DB_ID (N'mytest') IS NOT NULL
DROP DATABASE mytest;
GO
CREATE DATABASE mytest;
GO
-- Verify the database files and sizes
SELECT name, size, size*1.0/128 AS [Size in MBs]
FROM sys.master_files
WHERE name = N'mytest';
GO
B. Tworzenie bazy danych określającej dane i pliki dziennika transakcji
Poniższy przykład tworzy bazę danych Sales
. Ponieważ słowo kluczowe PRIMARY nie jest używane, pierwszy plik (Sales_dat
) staje się plikiem podstawowym. Ponieważ ani MB, ani KB nie jest określony w parametrze SIZE dla pliku Sales_dat
, używa MB i jest przydzielany w megabajtach. Plik Sales_log
jest przydzielany w megabajtach, ponieważ sufiks MB
jest jawnie określony w parametrze SIZE
.
USE master;
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO
C. Tworzenie bazy danych przez określenie wielu plików dziennika danych i transakcji
Poniższy przykład obejmuje tworzenie Archive
bazy danych z trzema plikami danych 100-MB
i dwoma plikami dziennika transakcji 100-MB
. Plik podstawowy jest pierwszym plikiem na liście i jest jawnie określony za pomocą słowa kluczowego PRIMARY
. Pliki dziennika transakcji są określane zgodnie z LOG ON
słowami kluczowymi. Zwróć uwagę, że rozszerzenia używane dla plików w FILENAME
opcji: .mdf
jest używany dla podstawowych plików danych, .ndf
jest używany dla pomocniczych plików danych, a .ldf
jest używany dla plików dziennika transakcji. W tym przykładzie baza danych jest umieszczana na dysku D:
zamiast z bazą danych master
.
USE master;
GO
CREATE DATABASE Archive
ON
PRIMARY
(NAME = Arch1,
FILENAME = 'D:\SalesData\archdat1.mdf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Arch2,
FILENAME = 'D:\SalesData\archdat2.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Arch3,
FILENAME = 'D:\SalesData\archdat3.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20)
LOG ON
(NAME = Archlog1,
FILENAME = 'D:\SalesData\archlog1.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
(NAME = Archlog2,
FILENAME = 'D:\SalesData\archlog2.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20) ;
GO
D. Tworzenie bazy danych zawierającej grupy plików
Poniższy przykład tworzy bazę danych Sales
z następującymi grupami plików:
- Podstawowa grupa plików z plikami
Spri1_dat
iSpri2_dat
. Przyrosty FILEGROWTH dla tych plików są określane jako15%
. - Grupa plików o nazwie
SalesGroup1
z plikamiSGrp1Fi1
iSGrp1Fi2
. - Grupa plików o nazwie
SalesGroup2
z plikamiSGrp2Fi1
iSGrp2Fi2
.
W tym przykładzie pliki danych i dzienników znajdują się na różnych dyskach w celu zwiększenia wydajności.
USE master;
GO
CREATE DATABASE Sales
ON PRIMARY
( NAME = SPri1_dat,
FILENAME = 'D:\SalesData\SPri1dat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15% ),
( NAME = SPri2_dat,
FILENAME = 'D:\SalesData\SPri2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15% ),
FILEGROUP SalesGroup1
( NAME = SGrp1Fi1_dat,
FILENAME = 'D:\SalesData\SG1Fi1dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
( NAME = SGrp1Fi2_dat,
FILENAME = 'D:\SalesData\SG1Fi2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
FILEGROUP SalesGroup2
( NAME = SGrp2Fi1_dat,
FILENAME = 'D:\SalesData\SG2Fi1dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 ),
( NAME = SGrp2Fi2_dat,
FILENAME = 'D:\SalesData\SG2Fi2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
FILENAME = 'E:\SalesLog\salelog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO
E. Dołączanie bazy danych
Poniższy przykład odłącza bazę danych Archive
utworzoną w przykładzie D, a następnie dołącza ją przy użyciu klauzuli FOR ATTACH
.
Archive
zdefiniowano, aby mieć wiele plików danych i dzienników. Jednak ze względu na to, że lokalizacja plików nie zmieniła się od czasu ich utworzenia, należy określić tylko plik podstawowy w klauzuli FOR ATTACH
. Począwszy od programu SQL Server 2005 (9.x), wszystkie pliki pełnotekstowe, które są częścią dołączonej bazy danych, zostaną dołączone do bazy danych.
USE master;
GO
sp_detach_db Archive;
GO
CREATE DATABASE Archive
ON (FILENAME = 'D:\SalesData\archdat1.mdf')
FOR ATTACH ;
GO
F. Tworzenie migawki bazy danych
Poniższy przykład tworzy migawkę bazy danych sales_snapshot0600
. Ponieważ migawka bazy danych jest tylko do odczytu, nie można określić pliku dziennika. Zgodnie ze składnią określono każdy plik w źródłowej bazie danych, a grupy plików nie są określone.
Źródłowa baza danych dla tego przykładu to baza danych Sales
utworzona w przykładzie D.
USE master;
GO
CREATE DATABASE sales_snapshot0600 ON
( NAME = SPri1_dat, FILENAME = 'D:\SalesData\SPri1dat_0600.ss'),
( NAME = SPri2_dat, FILENAME = 'D:\SalesData\SPri2dt_0600.ss'),
( NAME = SGrp1Fi1_dat, FILENAME = 'D:\SalesData\SG1Fi1dt_0600.ss'),
( NAME = SGrp1Fi2_dat, FILENAME = 'D:\SalesData\SG1Fi2dt_0600.ss'),
( NAME = SGrp2Fi1_dat, FILENAME = 'D:\SalesData\SG2Fi1dt_0600.ss'),
( NAME = SGrp2Fi2_dat, FILENAME = 'D:\SalesData\SG2Fi2dt_0600.ss')
AS SNAPSHOT OF Sales ;
GO
G. Tworzenie bazy danych i określanie nazwy sortowania i opcji
Poniższy przykład tworzy bazę danych MyOptionsTest
. Określono nazwę sortowania, a opcje TRUSTYWORTHY
i DB_CHAINING
są ustawione na ON
.
USE master;
GO
IF DB_ID (N'MyOptionsTest') IS NOT NULL
DROP DATABASE MyOptionsTest;
GO
CREATE DATABASE MyOptionsTest
COLLATE French_CI_AI
WITH TRUSTWORTHY ON, DB_CHAINING ON;
GO
--Verifying collation and option settings.
SELECT name, collation_name, is_trustworthy_on, is_db_chaining_on
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO
H. Dołączanie wykazu pełnotekstowego, który został przeniesiony
Poniższy przykład dołącza AdvWksFtCat
wykazu pełnotekstowego wraz z plikami danych i dzienników AdventureWorks2022
. W tym przykładzie wykaz pełnotekstowy jest przenoszony z domyślnej lokalizacji do nowej lokalizacji c:\myFTCatalogs
. Pliki danych i dzienników pozostają w ich domyślnych lokalizacjach.
USE master;
GO
--Detach the AdventureWorks2022 database
sp_detach_db AdventureWorks2022;
GO
-- Physically move the full text catalog to the new location.
--Attach the AdventureWorks2022 database and specify the new location of the full-text catalog.
CREATE DATABASE AdventureWorks2022 ON
(FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_data.mdf'),
(FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_log.ldf'),
(FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')
FOR ATTACH;
GO
Ja. Tworzenie bazy danych, która określa grupę plików wierszy i dwie grupy plików FILESTREAM
Poniższy przykład tworzy bazę danych FileStreamDB
. Baza danych jest tworzona przy użyciu jednej grupy plików wierszy i dwóch grup plików FILESTREAM. Każda grupa plików zawiera jeden plik:
-
FileStreamDB_data
zawiera dane wierszy. Zawiera jeden plik,FileStreamDB_data.mdf
ze ścieżką domyślną. -
FileStreamPhotos
zawiera dane FILESTREAM. Zawiera dwa kontenery danych FILESTREAM,FSPhotos
, znajdujące się wC:\MyFSfolder\Photos
iFSPhotos2
, znajdujące się wD:\MyFSfolder\Photos
. Jest ona oznaczona jako domyślna grupa plików FILESTREAM. -
FileStreamResumes
zawiera dane FILESTREAM. Zawiera on jeden kontener danych FILESTREAM,FSResumes
, znajdujący się wC:\MyFSfolder\Resumes
.
USE master;
GO
-- Get the SQL Server data path.
DECLARE @data_path nvarchar(256);
SET @data_path = (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);
-- Execute the CREATE DATABASE statement.
EXECUTE ('CREATE DATABASE FileStreamDB
ON PRIMARY
(
NAME = FileStreamDB_data
,FILENAME = ''' + @data_path + 'FileStreamDB_data.mdf''
,SIZE = 10MB
,MAXSIZE = 50MB
,FILEGROWTH = 15%
),
FILEGROUP FileStreamPhotos CONTAINS FILESTREAM DEFAULT
(
NAME = FSPhotos
,FILENAME = ''C:\MyFSfolder\Photos''
-- SIZE and FILEGROWTH should not be specified here.
-- If they are specified an error will be raised.
, MAXSIZE = 5000 MB
),
(
NAME = FSPhotos2
, FILENAME = ''D:\MyFSfolder\Photos''
, MAXSIZE = 10000 MB
),
FILEGROUP FileStreamResumes CONTAINS FILESTREAM
(
NAME = FileStreamResumes
,FILENAME = ''C:\MyFSfolder\Resumes''
)
LOG ON
(
NAME = FileStream_log
,FILENAME = ''' + @data_path + 'FileStreamDB_log.ldf''
,SIZE = 5MB
,MAXSIZE = 25MB
,FILEGROWTH = 5MB
)'
);
GO
J. Tworzenie bazy danych zawierającej grupę plików FILESTREAM z wieloma plikami
Poniższy przykład tworzy bazę danych BlobStore1
. Baza danych jest tworzona z jedną grupą plików wierszy i jedną grupą plików FILESTREAM, FS
. Grupa plików FILESTREAM zawiera dwa pliki, FS1
i FS2
. Następnie baza danych zostanie zmieniona przez dodanie trzeciego pliku FS3
do grupy plików FILESTREAM.
USE master;
GO
CREATE DATABASE [BlobStore1]
CONTAINMENT = NONE
ON PRIMARY
(
NAME = N'BlobStore1',
FILENAME = N'C:\BlobStore\BlobStore1.mdf',
SIZE = 100MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1MB
),
FILEGROUP [FS] CONTAINS FILESTREAM DEFAULT
(
NAME = N'FS1',
FILENAME = N'C:\BlobStore\FS1',
MAXSIZE = UNLIMITED
),
(
NAME = N'FS2',
FILENAME = N'C:\BlobStore\FS2',
MAXSIZE = 100MB
)
LOG ON
(
NAME = N'BlobStore1_log',
FILENAME = N'C:\BlobStore\BlobStore1_log.ldf',
SIZE = 100MB,
MAXSIZE = 1GB,
FILEGROWTH = 1MB
);
GO
ALTER DATABASE [BlobStore1]
ADD FILE
(
NAME = N'FS3',
FILENAME = N'C:\BlobStore\FS3',
MAXSIZE = 100MB
)
TO FILEGROUP [FS];
GO
Powiązana zawartość
- ALTER DATABASE
- odłączanie i dołączanie bazy danych
- DROP DATABASE
- EVENTDATA
- ALTER AUTHORIZATION
- sp_detach_db
- sp_removedbreplication
- migawki bazy danych
- przenieś pliki bazy danych
- baz danych
- danych dużych obiektów binarnych (blob)
* SQL Database *
usługi
Azure Synapse
analizy
SQL Database
Przegląd
W usłudze Azure SQL Database ta instrukcja może służyć z serwerem Azure SQL do tworzenia pojedynczej bazy danych lub bazy danych w elastycznej puli. W przypadku tej instrukcji należy określić nazwę bazy danych, sortowanie, maksymalny rozmiar, edycję, cel usługi i, jeśli ma to zastosowanie, elastyczną pulę dla nowej bazy danych. Można go również użyć do utworzenia bazy danych w elastycznej puli. Ponadto można jej użyć do utworzenia kopii bazy danych na innym serwerze usługi SQL Database.
Składnia
Tworzenie bazy danych
Aby uzyskać więcej informacji na temat konwencji składni, zobacz Transact-SQL konwencje składni.
CREATE DATABASE database_name [ COLLATE collation_name ]
{
(<edition_options> [, ...n])
}
[ WITH <with_options> [,..n]]
[;]
<with_options> ::=
{
CATALOG_COLLATION = { DATABASE_DEFAULT | SQL_Latin1_General_CP1_CI_AS }
| BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' | 'GEOZONE' }
| LEDGER = {ON | OFF }
}
<edition_options> ::=
{
MAXSIZE = { 100 MB | 500 MB | 1 ... 1024 ... 4096 GB }
| ( EDITION = { 'Basic' | 'Standard' | 'Premium' | 'GeneralPurpose' | 'BusinessCritical' | 'Hyperscale' }
| SERVICE_OBJECTIVE =
{ 'Basic' | 'S0' | 'S1' | 'S2' | 'S3' | 'S4'| 'S6'| 'S7'| 'S9'| 'S12'
| 'P1' | 'P2' | 'P4'| 'P6' | 'P11' | 'P15'
| 'BC_DC_n'
| 'BC_Gen5_n'
| 'BC_M_n'
| 'GP_DC_n'
| 'GP_Fsv2_n'
| 'GP_Gen5_n'
| 'GP_S_Gen5_n'
| 'HS_DC_n'
| 'HS_Gen5_n'
| 'HS_S_Gen5_n'
| 'HS_MOPRMS_n'
| 'HS_PRMS_n'
| { ELASTIC_POOL(name = <elastic_pool_name>) } })
}
Kopiowanie bazy danych
CREATE DATABASE database_name
AS COPY OF [source_server_name.] source_database_name
[ ( SERVICE_OBJECTIVE =
{ 'Basic' |'S0' | 'S1' | 'S2' | 'S3'| 'S4'| 'S6'| 'S7'| 'S9'| 'S12'
| 'P1' | 'P2' | 'P4'| 'P6' | 'P11' | 'P15'
| 'GP_Gen5_n'
| 'GP_Fsv2_n'
| 'GP_S_Gen5_n'
| 'BC_Gen5_n'
| 'BC_M_n'
| 'HS_Gen5_n'
| 'HS_S_Gen5_n'
| 'HS_PRMS_n'
| 'HS_MOPRMS_n'
| { ELASTIC_POOL(name = <elastic_pool_name>) } })
]
[ WITH ( BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' } ) ]
[;]
Argumenty
database_name
Nazwa nowej bazy danych. Ta nazwa musi być unikatowa w programie SQL Server i być zgodna z regułami programu SQL Server dotyczącymi identyfikatorów. Aby uzyskać więcej informacji, zobacz Identyfikatory.
Collation_name
Określa domyślne sortowanie danych bazy danych. Określ CATALOG_COLLATION
dla metadanych systemu, takich jak identyfikatory obiektów.
Nazwa sortowania może być nazwą sortowania systemu Windows lub nazwą sortowania SQL. Jeśli nie zostanie określona, baza danych zostanie przypisana do sortowania domyślnego, które jest SQL_Latin1_General_CP1_CI_AS.
Aby uzyskać więcej informacji na temat nazw sortowania systemu Windows i SQL, COLLATE (Transact-SQL).
CATALOG_COLLATION
Określa sortowanie domyślne wykazu metadanych. Argument CATALOG_COLLATION
jest dostępny tylko podczas tworzenia bazy danych i nie można go zmienić po utworzeniu.
Domyślnie wykaz metadanych nazw obiektów systemowych jest sortowany w celu SQL_Latin1_General_CP1_CI_AS sortowania. Jest to ustawienie domyślne w usłudze Azure SQL Database, jeśli CATALOG_COLLATION jest nieokreślony.
DATABASE_DEFAULT określa, że wykaz metadanych używany dla widoków systemowych i tabel systemowych jest sortowany w celu dopasowania sortowania bazy danych. Jeśli chcesz, aby identyfikatory obiektów w metadanych systemowych postępowały zgodnie z tym samym sortowaniem co dane, należy utworzyć bazę danych WITH CATALOG_COLLATION = DATABASE_DEFAULT
.
Możesz chcieć używać różnych sortowania dla identyfikatorów danych i obiektów. Poniższy przykład tworzy bazę danych z sortowaniem uwzględniającym wielkość liter dla danych wierszy, ale użyje domyślnej SQL_Latin1_General_CP1_CI_AS sortowania bez uwzględniania wielkości liter dla identyfikatorów obiektów.
CREATE DATABASE [different-collations] COLLATE SQL_Latin1_General_CP1_CS_AS
Jeśli chcesz, aby metadane danych i systemu używały tego samego sortowania, określ
WITH CATALOG_COLLATION = DATABASE_DEFAULT
. Poniższy przykład tworzy bazę danych z sortowaniem uwzględniającym wielkość liter, które będzie używane dla identyfikatorów obiektów.CREATE DATABASE [same-collations] COLLATE SQL_Latin1_General_CP1_CS_AS WITH CATALOG_COLLATION = DATABASE_DEFAULT
BACKUP_STORAGE_REDUNDANCY = {'LOCAL' | "ZONE" | 'GEO'}
Określa sposób replikowania kopii zapasowych przywracania do punktu w czasie i przechowywania długoterminowego dla bazy danych. Przywracanie geograficzne lub możliwość odzyskiwania po awarii regionalnej jest dostępna tylko wtedy, gdy baza danych jest tworzona z nadmiarowością magazynu kopii zapasowych GEO
. O ile nie określono jawnie, bazy danych utworzone za pomocą języka T-SQL używają magazynu kopii zapasowych geograficznie nadmiarowych.
Aby wymusić miejsce przechowywania danych podczas tworzenia bazy danych przy użyciu języka T-SQL, użyj LOCAL
lub ZONE
jako danych wejściowych dla parametru BACKUP_STORAGE_REDUNDANCY.
Podczas tworzenia bazy danych jako kopii innej bazy danych z AS COPY OF
, określanie opcji jest obsługiwane i powinno być opakowane w nawiasy. Na przykład WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');
.
LEDGER = {ON | WYŁ. }
Po ustawieniu wartości na ON
program tworzy bazę danych rejestru, w której jest chroniona integralność wszystkich danych użytkownika. W bazie danych rejestru można tworzyć tylko tabele rejestru. Wartość domyślna to OFF
. Nie można zmienić wartości opcji LEDGER
po utworzeniu bazy danych. Aby uzyskać więcej informacji, zobacz Konfigurowanie bazy danych rejestru.
MAXSIZE
Określa maksymalny rozmiar bazy danych. WARTOŚĆ MAXSIZE musi być prawidłowa dla określonej wersji (warstwa usługi).
Poniżej przedstawiono obsługiwane wartości MAXSIZE i wartości domyślne (D) dla warstw usług.
Nuta
Argument MAXSIZE nie ma zastosowania do pojedynczych baz danych w warstwie usługi Hiperskala. Pojedyncze bazy danych warstwy Hiperskala rosną zgodnie z potrzebami, do 128 TB. Usługa SQL Database automatycznie dodaje magazyn — nie trzeba ustawiać maksymalnego rozmiaru.
modelu jednostek DTU dla pojedynczych baz danych i baz danych w puli na serwerze usługi SQL Database
MAXSIZE | Podstawowa | |
|
P1-P6 | |
---|---|---|---|---|---|
100 MB | √ | √ | √ | √ | √ |
500 MB | √ | √ | √ | √ | √ |
1 GB | √ | √ | √ | √ | √ |
2 GB | √ (D) | √ | √ | √ | √ |
5 GB | N/A | √ | √ | √ | √ |
10 GB | N/A | √ | √ | √ | √ |
20 GB | N/A | √ | √ | √ | √ |
30 GB | N/A | √ | √ | √ | √ |
40 GB | N/A | √ | √ | √ | √ |
50 GB | N/A | √ | √ | √ | √ |
100 GB | N/A | √ | √ | √ | √ |
150 GB | N/A | √ | √ | √ | √ |
200 GB | N/A | √ | √ | √ | √ |
250 GB | N/A | √ (D) | √ (D) | √ | √ |
300 GB | N/A | N/A | √ | √ | √ |
400 GB | N/A | N/A | √ | √ | √ |
500 GB | N/A | N/A | √ | √ (D) | √ |
750 GB | N/A | N/A | √ | √ | √ |
1024 GB | N/A | N/A | √ | √ | √ (D) |
Od 1024 GB do 4096 GB w przyrostach 256 GB* | N/A | N/A | N/A | N/A | √ |
* P11 i P15 zezwalają na maksymalny rozmiar MAXSIZE do 4 TB, a rozmiar domyślny wynosi 1024 GB. P11 i P15 mogą korzystać z maksymalnie 4 TB dołączonego miejsca do magazynowania bez dodatkowych opłat. W warstwie Premium wartość MAXSIZE większa niż 1 TB jest obecnie dostępna w następujących regionach: Wschodnie stany USA2, Zachodnie stany USA, US Gov Wirginia, Europa Zachodnia, Niemcy Środkowe, Azja Południowo-Wschodnia, Japonia Wschodnia, Australia Wschodnia, Kanada Środkowa i Kanada Wschodnia. Aby uzyskać więcej informacji na temat ograniczeń zasobów dla modelu JEDNOSTEK DTU, zobacz limity zasobów jednostek DTU.
Wartość MAXSIZE dla modelu DTU, jeśli określono, musi być prawidłową wartością pokazaną w poprzedniej tabeli dla określonej warstwy usługi.
W przypadku limitów, takich jak maksymalny rozmiar danych i rozmiar tempdb
w modelu zakupów rdzeni wirtualnych, zapoznaj się z artykułami dotyczącymi limitów zasobów dla pojedynczych baz danych lub limitów zasobów dla pul elastycznych.
Jeśli podczas korzystania z modelu rdzeni wirtualnych nie ustawiono żadnej wartości MAXSIZE
, wartość domyślna to 32 GB. Aby uzyskać więcej informacji na temat ograniczeń zasobów dla modelu rdzeni wirtualnych, zobacz limity zasobów rdzeni wirtualnych.
WYDANIE
Określa warstwę usługi bazy danych.
Pojedyncze i w puli bazy danych. Dostępne wartości to: "Basic", "Standard", "Premium", "GeneralPurpose", "BusinessCritical" i "Hiperskala".
Następujące reguły dotyczą argumentów MAXSIZE i EDITION:
- Jeśli określono wartość EDITION, ale wartość MAXSIZE nie jest określona, zostanie użyta wartość domyślna dla wersji. Jeśli na przykład wartość EDITION jest ustawiona na Standardowa, a wartość MAXSIZE nie jest określona, wartość MAXSIZE zostanie automatycznie ustawiona na 250 MB.
- Jeśli nie określono wartości MAXSIZE ani EDITION, wartość EDITION jest ustawiona na
GeneralPurpose
, a wartość MAXSIZE jest ustawiona na 32 GB.
SERVICE_OBJECTIVE
Określa rozmiar obliczeniowy i cel usługi.
- W przypadku modelu zakupów jednostek DTU:
S0
,S1
,S2
,S3
,S4
,S6
,S7
,S9
,S12
,P1
,P2
,P4
,P6
,P11
,P15
- W przypadku najnowszego modelu zakupów rdzeni wirtualnych wybierz warstwę i podaj liczbę rdzeni wirtualnych z wstępnie ustawionej listy wartości, gdzie liczba rdzeni wirtualnych jest
n
. Zapoznaj się z limitami zasobów dla pojedynczych baz danych lub limitów zasobów dla pul elastycznych.- Na przykład:
-
GP_Gen5_8
w przypadku warstwy Ogólnego przeznaczenia, aprowizowania zasobów obliczeniowych, standardowej serii (Gen5), 8 rdzeni wirtualnych. -
GP_S_Gen5_8
dla ogólnego przeznaczenia, bezserwerowych obliczeń, serii Standardowej (Gen5), 8 rdzeni wirtualnych. -
HS_Gen5_8
dla warstwy Hiperskala, aprowizowanych zasobów obliczeniowych, serii Standardowej (Gen5), 8 rdzeni wirtualnych. -
HS_S_Gen5_8
dla hiperskala, bezserwerowych obliczeń, serii Standardowej (Gen5), 8 rdzeni wirtualnych.
Aby uzyskać opisy celów usługi i więcej informacji o rozmiarze, wersjach i kombinacjach celów usługi, zobacz Warstwy usługi Azure SQL Database. Jeśli określona SERVICE_OBJECTIVE nie jest obsługiwana przez edycję, zostanie wyświetlony błąd. Aby zmienić wartość SERVICE_OBJECTIVE z jednej warstwy na inną (na przykład z S1 na P1), należy również zmienić wartość EDITION. Obsługa celów usługi PRS została usunięta.
ELASTIC_POOL (nazwa = <elastic_pool_name>)
Dotyczy tylko: pojedynczych i w puli baz danych. Nie dotyczy baz danych w warstwie usługi Hiperskala. Aby utworzyć nową bazę danych w elastycznej puli baz danych, ustaw SERVICE_OBJECTIVE bazy danych na ELASTIC_POOL i podaj nazwę puli. Aby uzyskać więcej informacji, zobacz Tworzenie elastycznej puli usługi SQL Database i zarządzanie nią.
JAKO KOPIA [source_server_name.]source_database_name
Dotyczy tylko: pojedynczych i w puli baz danych.
Użyj AS COPY OF
, aby skopiować bazę danych na ten sam lub inny serwer usługi SQL Database.
Podczas tworzenia bazy danych jako kopii innej bazy danych z AS COPY OF
, określanie opcji jest obsługiwane i powinno być opakowane w nawiasy. Na przykład WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');
.
source_server_name Nazwa serwera usługi SQL Database, na którym znajduje się źródłowa baza danych. Ten parametr jest opcjonalny, gdy źródłowa baza danych i docelowa baza danych mają znajdować się na tym samym serwerze usługi SQL Database.
Nuta
Argument AS COPY OF
nie obsługuje w pełni kwalifikowanych unikatowych nazw domen. Innymi słowy, jeśli w pełni kwalifikowana nazwa domeny serwera jest serverName.database.windows.net
, użyj tylko serverName
podczas kopiowania bazy danych.
source_database_name
Nazwa bazy danych, która ma zostać skopiowana.
Uwagi
Bazy danych w usłudze Azure SQL Database mają kilka ustawień domyślnych ustawionych podczas tworzenia bazy danych. Aby uzyskać więcej informacji na temat tych ustawień domyślnych, zobacz listę wartości w DATABASEPROPERTYEX.
MAXSIZE
umożliwia ograniczenie rozmiaru bazy danych. Jeśli rozmiar bazy danych osiągnie MAXSIZE
, zostanie wyświetlony kod błędu 40544. W takim przypadku nie można wstawiać ani aktualizować danych ani tworzyć nowych obiektów (takich jak tabele, procedury składowane, widoki i funkcje). Można jednak nadal odczytywać i usuwać dane, obcinać tabele, usuwać tabele i indeksy oraz ponownie kompilować indeksy. Następnie można zaktualizować MAXSIZE
do wartości większej niż bieżący rozmiar bazy danych lub usunąć niektóre dane, aby zwolnić miejsce do magazynowania. Zanim będzie można wstawić nowe dane, może wystąpić nawet piętnaście minut opóźnienia.
Aby później zmienić rozmiar, edycję lub wartości celu usługi, użyj ALTER DATABASE (Azure SQL Database).
Kopie bazy danych
Dotyczy tylko: pojedynczych i w puli baz danych.
Kopiowanie bazy danych przy użyciu instrukcji CREATE DATABASE
jest operacją asynchroniczną. W związku z tym połączenie z serwerem usługi SQL Database nie jest wymagane przez pełny czas trwania procesu kopiowania. Instrukcja CREATE DATABASE
zwraca użytkownikowi kontrolę po utworzeniu wpisu w sys.databases
, ale przed zakończeniem operacji kopiowania bazy danych. Innymi słowy, instrukcja CREATE DATABASE
jest zwracana pomyślnie, gdy kopia bazy danych jest nadal w toku.
- Monitorowanie procesu kopiowania na serwerze usługi SQL Database: wykonaj zapytanie o kolumny
lub w dm_database_copies lub kolumniew widoku sys.databases. Widok sys.dm_operation_status może być używany, a także zwraca stan operacji bazy danych, w tym kopii bazy danych.
W momencie pomyślnego zakończenia procesu kopiowania docelowa baza danych jest transakcyjnie zgodna z źródłową bazą danych.
Następująca składnia i reguły semantyczne mają zastosowanie do użycia argumentu AS COPY OF
:
- Nazwa serwera źródłowego i nazwa serwera dla obiektu docelowego kopiowania może być taka sama lub inna. Jeśli są one takie same, ten parametr jest opcjonalny, a kontekst serwera bieżącej sesji jest używany domyślnie.
- Nazwy źródłowej i docelowej bazy danych muszą być określone, unikatowe i zgodne z regułami programu SQL Server dotyczącymi identyfikatorów. Aby uzyskać więcej informacji, zobacz Identyfikatory.
- Instrukcja
CREATE DATABASE
musi być wykonywana w kontekście bazy danychmaster
serwera usługi SQL Database, na którym zostanie utworzona nowa baza danych. - Po zakończeniu kopiowania docelowa baza danych musi być zarządzana jako niezależna baza danych. Można wykonać instrukcje
ALTER DATABASE
iDROP DATABASE
względem nowej bazy danych niezależnie od źródłowej bazy danych. Możesz również skopiować nową bazę danych do innej nowej bazy danych. - Źródłowa baza danych może być nadal dostępna, gdy kopia bazy danych jest w toku.
Aby uzyskać więcej informacji, zobacz
Ważny
Domyślnie kopia bazy danych jest tworzona z tą samą nadmiarowością magazynu kopii zapasowych co źródłowa baza danych.
Uprawnienia
Aby utworzyć bazę danych, identyfikator logowania musi być jednym z następujących podmiotów zabezpieczeń:
- Identyfikator logowania podmiotu zabezpieczeń na poziomie serwera
- Administrator firmy Microsoft dla serwera logicznego na platformie Azure
- Identyfikator logowania będący członkiem roli bazy danych
dbmanager
Dodatkowe wymagania dotyczące używania składni CREATE DATABASE ... AS COPY OF
: Logowanie wykonujące instrukcję na serwerze lokalnym musi być również co najmniej db_owner
na serwerze źródłowym. Jeśli identyfikator logowania jest oparty na uwierzytelnianiu programu SQL Server, identyfikator logowania wykonujący instrukcję na serwerze lokalnym musi mieć pasujący identyfikator logowania na źródłowym serwerze usługi SQL Database z identyczną nazwą i hasłem.
Przykłady
Prosty przykład
Prosty przykład tworzenia bazy danych.
CREATE DATABASE TestDB1;
Prosty przykład z wersją
Prosty przykład tworzenia bazy danych ogólnego przeznaczenia.
CREATE DATABASE TestDB2
( EDITION = 'GeneralPurpose' );
Przykład z dodatkowymi opcjami
Przykład z użyciem wielu opcji.
CREATE DATABASE hito
COLLATE Japanese_Bushu_Kakusu_100_CS_AS_KS_WS
( MAXSIZE = 500 MB, EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8' ) ;
Tworzenie kopii bazy danych
Przykład tworzenia kopii bazy danych.
Dotyczy tylko: pojedynczych i w puli baz danych.
CREATE DATABASE escuela
AS COPY OF school;
Tworzenie bazy danych w elastycznej puli
Tworzy nową bazę danych w puli o nazwie S3M100:
Dotyczy tylko: pojedynczych i w puli baz danych.
CREATE DATABASE db1 ( SERVICE_OBJECTIVE = ELASTIC_POOL ( name = S3M100 ) ) ;
Tworzenie kopii bazy danych na innym serwerze logicznym
Poniższy przykład tworzy kopię bazy danych db_original
o nazwie db_copy
w celu usługi Ogólnego przeznaczenia dla pojedynczej bazy danych. Jest to prawdą niezależnie od tego, czy db_original
znajduje się w elastycznej puli, czy w ramach rozmiaru obliczeniowego (celu usługi) dla pojedynczej bazy danych.
Dotyczy tylko: pojedynczych i w puli baz danych.
CREATE DATABASE db_copy
AS COPY OF ozabzw7545.db_original ( EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8' );
Poniższy przykład tworzy kopię bazy danych db_original
o nazwie db_copy
w elastycznej puli o nazwie ep1
. Jest to prawdą niezależnie od tego, czy db_original
znajduje się w elastycznej puli, czy w ramach rozmiaru obliczeniowego (celu usługi) dla pojedynczej bazy danych. Jeśli db_original
znajduje się w elastycznej puli o innej nazwie, db_copy
jest nadal tworzona w ep1
.
Dotyczy tylko: pojedynczych i w puli baz danych.
CREATE DATABASE db_copy
AS COPY OF ozabzw7545.db_original
(SERVICE_OBJECTIVE = ELASTIC_POOL( name = ep1 ) ) ;
Tworzenie bazy danych z określoną wartością sortowania wykazu
Poniższy przykład ustawia sortowanie wykazu na DATABASE_DEFAULT podczas tworzenia bazy danych, co ustawia sortowanie wykazu na taki sam jak sortowanie bazy danych.
CREATE DATABASE TestDB3 COLLATE Japanese_XJIS_140 (MAXSIZE = 100 MB, EDITION = 'Basic')
WITH CATALOG_COLLATION = DATABASE_DEFAULT;
Tworzenie bazy danych przy użyciu nadmiarowości strefy dla kopii zapasowych
W poniższym przykładzie ustawiono nadmiarowość strefy dla kopii zapasowych bazy danych. Zarówno kopie zapasowe przywracania do punktu w czasie, jak i kopie zapasowe przechowywania długoterminowego (jeśli zostały skonfigurowane) będą używać tej samej nadmiarowości magazynu kopii zapasowych.
CREATE DATABASE test_zone_redundancy
WITH BACKUP_STORAGE_REDUNDANCY = 'ZONE';
Tworzenie bazy danych rejestru
CREATE DATABASE MyLedgerDB ( EDITION = 'GeneralPurpose' ) WITH LEDGER = ON;
Utwórz jako kopię bazy danych podczas zmieniania opcji
W poniższym przykładzie ustawiono różne opcje dla nowej kopii bazy danych, w tym inną warstwę usługi i ustawienia nadmiarowości magazynu kopii zapasowych. Domyślnie kopia bazy danych jest tworzona z tymi samymi ustawieniami co źródłowa baza danych.
CREATE DATABASE copy_testdb
AS COPY OF [test_db]
(EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8')
WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');
Powiązana zawartość
usługi
* SQL Managed Instance *
Azure Synapse
analizy
Azure SQL Managed Instance
Przegląd
W usłudze Azure SQL Managed Instance ta instrukcja służy do tworzenia bazy danych. Podczas tworzenia bazy danych w wystąpieniu zarządzanym należy określić nazwę i sortowanie bazy danych.
Składnia
Aby uzyskać więcej informacji na temat konwencji składni, zobacz Transact-SQL konwencje składni.
CREATE DATABASE database_name [ COLLATE collation_name ]
[ WITH <with_options> [,..n]]
[;]
<with_options> ::=
{
LEDGER = { ON | OFF }
}
Ważny
Aby dodać pliki lub ustawić zawieranie bazy danych w wystąpieniu zarządzanym, użyj instrukcji ALTER DATABASE.
W przypadku wystąpień zarządzanych SQL początkowy parametr MAXSIZE jest niejawnie ustawiony na bieżący rozmiar dysku i nie zmienia się automatycznie po rozszerzeniu rozmiaru dysku z witryny Azure Portal. Po rozszerzeniu dysku należy również rozszerzyć rozszerzenie MAXSIZE przy użyciu ALTER DATABASE, aby uniknąć błędów pełnych plików bazy danych.
Argumenty
database_name
Nazwa nowej bazy danych. Ta nazwa musi być unikatowa na serwerze SQL i być zgodna z regułami programu SQL Server dla identyfikatorów. Aby uzyskać więcej informacji, zobacz Identyfikatory.
Collation_name
Określa sortowanie domyślne dla bazy danych. Nazwa sortowania może być nazwą sortowania systemu Windows lub nazwą sortowania SQL. Jeśli nie zostanie określona, baza danych zostanie przypisana do sortowania domyślnego, które jest SQL_Latin1_General_CP1_CI_AS.
Aby uzyskać więcej informacji na temat nazw sortowania systemu Windows i SQL, COLLATE (Transact-SQL).
LEDGER = {ON | WYŁĄCZONE }
Po ustawieniu wartości na ON
program tworzy bazę danych rejestru, w której jest chroniona integralność wszystkich danych użytkownika. W bazie danych rejestru można tworzyć tylko tabele rejestru. Wartość domyślna to OFF
. Nie można zmienić wartości opcji LEDGER
po utworzeniu bazy danych. Aby uzyskać więcej informacji, zobacz Konfigurowanie bazy danych rejestru.
Uwagi
Bazy danych w usłudze Azure SQL Database mają kilka ustawień domyślnych ustawionych podczas tworzenia bazy danych. Aby uzyskać więcej informacji na temat tych ustawień domyślnych, zobacz listę wartości w DATABASEPROPERTYEX.
Ważny
Instrukcja CREATE DATABASE
musi być jedyną instrukcją w partii Transact-SQL.
Poniżej przedstawiono CREATE DATABASE
ograniczenia:
Nie można zdefiniować plików i grup plików.
WITH
opcje nie są obsługiwane, z wyjątkiemWITH LEDGER
.Napiwek
Aby obejść ten problem, użyj ALTER DATABASE. po
CREATE DATABASE
ustawić opcje bazy danych i dodać pliki.
Uprawnienia
Aby utworzyć bazę danych, identyfikator logowania musi być jednym z następujących elementów:
- Identyfikator logowania podmiotu zabezpieczeń na poziomie serwera
- Administrator firmy Microsoft dla serwera logicznego na platformie Azure
- Identyfikator logowania będący członkiem roli bazy danych
dbcreator
Przykłady
Prosty przykład
Prosty przykład tworzenia bazy danych.
CREATE DATABASE TestDB1;
Tworzenie bazy danych rejestru
CREATE DATABASE MyLedgerDB WITH LEDGER = ON;
Powiązana zawartość
usługi
usługi
* Azure Synapse
Analiza *
Azure Synapse Analytics
Przegląd
W usłudze Azure Synapse ta instrukcja może być używana z serwerem usługi Azure SQL Database w celu utworzenia dedykowanej puli SQL. W przypadku tej instrukcji należy określić nazwę bazy danych, sortowanie, maksymalny rozmiar, edycję i cel usługi.
- Funkcja CREATE DATABASE jest obsługiwana w przypadku autonomicznych dedykowanych pul SQL (dawniej SQL DW) przy użyciu poziomów usługi Gen2.
- Funkcja CREATE DATABASE nie jest obsługiwana w przypadku dedykowanych pul SQL w obszarze roboczym usługi Azure Synapse Analytics. Zamiast tego użyć witryny Azure Portal.
- Funkcja CREATE DATABASE jest obsługiwana w przypadku bezserwerowych pul SQL w usłudze Azure Synapse Analytics.
Składnia
Aby uzyskać więcej informacji na temat konwencji składni, zobacz Transact-SQL konwencje składni.
-
dedykowanej puli SQL
- bezserwerowej puli SQL
CREATE DATABASE database_name [ COLLATE collation_name ]
(
[ MAXSIZE = {
250 | 500 | 750 | 1024 | 5120 | 10240 | 20480 | 30720
| 40960 | 51200 | 61440 | 71680 | 81920 | 92160 | 102400
| 153600 | 204800 | 245760
} GB ,
]
EDITION = 'datawarehouse',
SERVICE_OBJECTIVE = {
'DW100c' | 'DW200c' | 'DW300c' | 'DW400c' | 'DW500c'
| 'DW1000c' | 'DW1500c' | 'DW2000c' | 'DW2500c' | 'DW3000c' | 'DW5000c'
| 'DW6000c' | 'DW7500c' | 'DW10000c' | 'DW15000c' | 'DW30000c'
}
)
[;]
Argumenty
database_name
Nazwa nowej bazy danych. Ta nazwa musi być unikatowa na serwerze SQL, który może hostować zarówno bazy danych w bazach danych Azure SQL Database, jak i Azure Synapse Analytics oraz być zgodny z regułami programu SQL Server dotyczącymi identyfikatorów. Aby uzyskać więcej informacji, zobacz Identyfikatory.
collation_name
Określa sortowanie domyślne dla bazy danych. Nazwa sortowania może być nazwą sortowania systemu Windows lub nazwą sortowania SQL. Jeśli nie zostanie określona, baza danych zostanie przypisana do sortowania domyślnego, które jest SQL_Latin1_General_CP1_CI_AS.
Aby uzyskać więcej informacji na temat nazw sortowania systemu Windows i SQL, zobacz COLLATE (Transact-SQL).
MAXSIZE
Wartość domyślna to 245 760 GB (240 TB).
Dotyczy: Zoptymalizowane pod kątem obliczeń Gen1
Maksymalny dozwolony rozmiar bazy danych. Baza danych nie może rosnąć poza maxSIZE.
Dotyczy: Zoptymalizowane pod kątem obliczeń Gen2
Maksymalny dozwolony rozmiar danych magazynu wierszy w bazie danych. Dane przechowywane w tabelach magazynu wierszy, magazynie różnicowym indeksu magazynu kolumn lub indeksie nieklastrowanym w klastrowanym indeksie magazynu kolumn nie mogą rosnąć poza maxSIZE. Dane skompresowane do formatu magazynu kolumn nie mają limitu rozmiaru i nie są ograniczone przez maxSIZE.
EDITION
Określa warstwę usługi bazy danych. W przypadku usługi Azure Synapse Analytics użyj datawarehouse
.
SERVICE_OBJECTIVE
Określa rozmiar obliczeniowy (cel usługi). Poziomy usług dla gen2 są mierzone w jednostkach magazynu danych obliczeniowych (cDWU), na przykład DW2000c
. Poziomy usługi Gen1 są mierzone w jednostkach DWU, na przykład DW2000
. Aby uzyskać więcej informacji na temat celów usługi dla usługi Azure Synapse, zobacz Data Warehouse Units (DWU). Cele usługi Gen1 (nie są już wymienione) nie są już obsługiwane. Może zostać wyświetlony błąd: Azure SQL Data Warehouse Gen1 has been deprecated in this region. Please use SQL Analytics in Azure Synapse.
Uwagi
Użyj DATABASEPROPERTYEX, aby wyświetlić właściwości bazy danych.
Użyj ALTER DATABASE — Azure Synapse Analytics, aby później zmienić maksymalny rozmiar lub wartości celu usługi.
Usługa Azure Synapse jest ustawiona na COMPATIBILITY_LEVEL 130 i nie można jej zmienić. Aby uzyskać więcej informacji, zobacz Ulepszona wydajność zapytań z poziomem zgodności 130 w usłudze Azure SQL Database.
Uprawnienia
Wymagane uprawnienia:
- Identyfikator logowania podmiotu zabezpieczeń na poziomie serwera utworzony przez proces aprowizacji lub
- Członek roli bazy danych
dbmanager
.
Obsługa błędów
Jeśli rozmiar bazy danych osiągnie wartość MAXSIZE, zostanie wyświetlony kod błędu 40544. W takim przypadku nie można wstawiać i aktualizować danych ani tworzyć nowych obiektów (takich jak tabele, procedury składowane, widoki i funkcje). Nadal można odczytywać i usuwać dane, obcinać tabele, usuwać tabele i indeksy oraz ponownie kompilować indeksy. Następnie można zaktualizować wartość MAXSIZE do wartości większej niż bieżący rozmiar bazy danych lub usunąć niektóre dane, aby zwolnić miejsce do magazynowania. Zanim będzie można wstawić nowe dane, może wystąpić nawet piętnaście minut opóźnienia.
Ograniczenia
Aby utworzyć nową bazę danych, musisz mieć połączenie z bazą danych master
.
Instrukcja CREATE DATABASE
musi być jedyną instrukcją w partii Transact-SQL.
Nie można zmienić sortowania bazy danych po utworzeniu bazy danych.
Przykłady: Azure Synapse Analytics
A. Prosty przykład
Prosty przykład tworzenia autonomicznej dedykowanej puli SQL (dawniej SQL DW). Spowoduje to utworzenie bazy danych o najmniejszym maksymalnym rozmiarze (10 240 GB), domyślnym sortowaniu (SQL_Latin1_General_CP1_CI_AS) i najmniejszym celu usługi Gen2 (DW100c).
CREATE DATABASE TestDW
(EDITION = 'datawarehouse', SERVICE_OBJECTIVE='DW100c');
B. Tworzenie bazy danych magazynu danych z wszystkimi opcjami
Przykład tworzenia autonomicznej dedykowanej puli SQL o rozmiarze 10 terabajtów (dawniej SQL DW).
CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS
(MAXSIZE = 10240 GB, EDITION = 'datawarehouse', SERVICE_OBJECTIVE = 'DW1000c');
C. Prosty przykład w bezserwerowej puli SQL usługi Synapse Analytics
Spowoduje to utworzenie bazy danych w puli bezserwerowej, określając sortowanie (Latin1_General_100_CI_AS_KS_WS).
CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS
Powiązana zawartość
-
ALTER DATABASE (Azure Synapse Analytics) - CREATE TABLE (Azure Synapse Analytics)
- DROP DATABASE
usługi
usługi
Azure Synapse
analizy
* Platforma analizy
System (PDW) *
System platformy analizy
Przegląd
W systemie platformy analizy ta instrukcja służy do tworzenia nowej bazy danych na urządzeniu Systemu platformy analizy. Użyj tej instrukcji, aby utworzyć wszystkie pliki skojarzone z bazą danych urządzenia oraz ustawić maksymalny rozmiar i opcje automatycznego zwiększania dla tabel bazy danych i dziennika transakcji.
Składnia
Aby uzyskać więcej informacji na temat konwencji składni, zobacz Transact-SQL konwencje składni.
CREATE DATABASE database_name
WITH (
[ AUTOGROW = ON | OFF , ]
REPLICATED_SIZE = replicated_size [ GB ] ,
DISTRIBUTED_SIZE = distributed_size [ GB ] ,
LOG_SIZE = log_size [ GB ] )
[;]
Argumenty
database_name
Nazwa nowej bazy danych. Aby uzyskać więcej informacji na temat dozwolonych nazw baz danych, zobacz "Reguły nazewnictwa obiektów" i "Nazwy zarezerwowanych baz danych" w dokumentacji produktu Analytics Platform System (PDW).
AUTOGROW = WŁĄCZONE | OD
Określa, czy parametry replicated_size, distributed_sizei log_size dla tej bazy danych będą automatycznie rosnąć w razie potrzeby poza określonymi rozmiarami. Wartość domyślna to OFF.
Jeśli funkcja AUTOGROW jest włączona, replicated_size, distributed_sizei log_size będą rosnąć zgodnie z wymaganiami (nie w blokach początkowego określonego rozmiaru) z każdą akcją wstawiania, aktualizowania lub innej akcji, która wymaga więcej miejsca do magazynowania niż została już przydzielona.
Jeśli funkcja AUTOGROW jest wyłączona, rozmiary nie będą automatycznie rosnąć. System platformy analizy (PDW) zwróci błąd podczas próby wykonania akcji wymagającej replicated_size, distributed_sizelub log_size, aby przekroczyć określoną wartość.
FUNKCJA AUTOGROW jest włączona dla wszystkich rozmiarów lub WYŁ. dla wszystkich rozmiarów. Na przykład nie można ustawić opcji AUTOGROW ON dla log_size, ale nie ustawić jej dla replicated_size.
replicated_size [ GB ]
Liczba dodatnia. Ustawia rozmiar (w liczbach całkowitych lub dziesiętnych) dla całkowitego miejsca przydzielonego do replikowanych tabel i odpowiadających im danych w każdym węźle obliczeniowym. Aby uzyskać minimalne i maksymalne wymagania dotyczące replicated_size, zobacz "Minimalne i maksymalne wartości" w dokumentacji produktu Analytics Platform System (PDW).
Jeśli funkcja AUTOGROW jest włączona, replikowane tabele będą mogły przekroczyć ten limit.
Jeśli funkcja AUTOGROW jest wyłączona, zostanie zwrócony błąd, jeśli użytkownik spróbuje utworzyć nową zreplikowaną tabelę, wstawić dane do istniejącej zreplikowanej tabeli lub zaktualizować istniejącą zreplikowaną tabelę w taki sposób, aby zwiększyć rozmiar poza replicated_size.
distributed_size [ GB ]
Liczba dodatnia. Rozmiar w gigabajtach całkowitych lub dziesiętnych dla całkowitego miejsca przydzielonego do tabel rozproszonych (i odpowiadających im danych) na urządzeniu. Aby uzyskać minimalne i maksymalne wymagania dotyczące distributed_size, zobacz "Minimalne i maksymalne wartości" w dokumentacji produktu Analytics Platform System (PDW).
Jeśli funkcja AUTOGROW jest włączona, tabele rozproszone będą mogły przekroczyć ten limit.
Jeśli funkcja AUTOGROW jest wyłączona, zostanie zwrócony błąd, jeśli użytkownik spróbuje utworzyć nową tabelę rozproszoną, wstawić dane do istniejącej tabeli rozproszonej lub zaktualizować istniejącą tabelę rozproszoną w taki sposób, aby zwiększyć rozmiar poza distributed_size.
log_size [ GB ]
Liczba dodatnia. Rozmiar (w liczbach całkowitych lub dziesiętnych) dla dziennika transakcji na urządzeniu.
Aby uzyskać minimalne i maksymalne wymagania dotyczące log_size, zobacz "Minimalne i maksymalne wartości" w dokumentacji produktu Analytics Platform System (PDW).
Jeśli funkcja AUTOGROW jest włączona, plik dziennika może przekroczyć ten limit. Użyj instrukcji
Jeśli funkcja AUTOGROW jest wyłączona, zostanie zwrócony użytkownikowi błąd dla każdej akcji, która zwiększy rozmiar dziennika w pojedynczym węźle obliczeniowym poza log_size.
Uprawnienia
Wymaga uprawnienia CREATE ANY DATABASE
w bazie danych master
lub członkostwa w sysadmin stałej roli serwera.
W poniższym przykładzie przedstawiono uprawnienia do tworzenia bazy danych dla użytkownika bazy danych Fay.
USE master;
GO
GRANT CREATE ANY DATABASE TO [Fay];
GO
Uwagi
Bazy danych są tworzone przy użyciu poziomu zgodności bazy danych 120, który jest poziomem zgodności dla programu SQL Server 2014 (12.x). Dzięki temu baza danych będzie mogła korzystać ze wszystkich funkcji programu SQL Server 2014 (12.x), z których korzysta pdW.
Ograniczenia i ograniczenia
Instrukcja CREATE DATABASE nie jest dozwolona w jawnej transakcji. Aby uzyskać więcej informacji, zobacz Statements.
Aby uzyskać informacje na temat minimalnych i maksymalnych ograniczeń dotyczących baz danych, zobacz "Minimalne i maksymalne wartości" w dokumentacji produktu Analytics Platform System (PDW).
Podczas tworzenia bazy danych musi być wystarczająca ilość wolnego miejsca w każdym węźle obliczeniowym, aby przydzielić łączną sumę następujących rozmiarów:
- Baza danych programu SQL Server z tabelami o rozmiarze replicated_table_size.
- Baza danych programu SQL Server z tabelami o rozmiarze (distributed_table_size / liczba węzłów obliczeniowych).
- Program SQL Server rejestruje rozmiar (log_size / liczba węzłów obliczeniowych).
Blokowania
Pobiera udostępnioną blokadę obiektu DATABASE.
Metadane
Po pomyślnym wykonaniu tej operacji wpis dla tej bazy danych zostanie wyświetlony w widokach metadanych sys.databases i sys.objects.
Przykłady: Analytics Platform System (PDW)
A. Przykłady tworzenia podstawowej bazy danych
Poniższy przykład tworzy bazę danych mytest
z alokacją magazynu 100 GB na węzeł obliczeniowy dla replikowanych tabel, 500 GB na urządzenie dla tabel rozproszonych i 100 GB na urządzenie dla dziennika transakcji. W tym przykładzie funkcja AUTOGROW jest domyślnie wyłączona.
CREATE DATABASE mytest
WITH
(REPLICATED_SIZE = 100 GB,
DISTRIBUTED_SIZE = 500 GB,
LOG_SIZE = 100 GB );
Poniższy przykład tworzy bazę danych mytest
z tymi samymi parametrami co powyżej, z tą różnicą, że funkcja AUTOGROW jest włączona. Dzięki temu baza danych może rosnąć poza określonymi parametrami rozmiaru.
CREATE DATABASE mytest
WITH
(AUTOGROW = ON,
REPLICATED_SIZE = 100 GB,
DISTRIBUTED_SIZE = 500 GB,
LOG_SIZE = 100 GB);
B. Tworzenie bazy danych z częściowymi rozmiarami gigabajtów
Poniższy przykład tworzy bazę danych mytest
, z wyłączoną funkcją AUTOGROW, alokacją magazynu 1,5 GB na węzeł obliczeniowy dla zreplikowanych tabel, 5,25 GB na urządzenie dla tabel rozproszonych i 10 GB na urządzenie dla dziennika transakcji.
CREATE DATABASE mytest
WITH
(REPLICATED_SIZE = 1.5 GB,
DISTRIBUTED_SIZE = 5.25 GB,
LOG_SIZE = 10 GB);