CREATE DATABASE (Transact-SQL)
Создает новую базу данных и файлы, используемые для ее хранения, создает моментальный снимок базы данных или присоединяет базу данных, составленную из отсоединенных файлов ранее созданной базы данных.
Синтаксис
CREATE DATABASE database_name
[ ON
{ [ PRIMARY ] [ <filespec> [ ,...n ]
[ , <filegroup> [ ,...n ] ]
[ LOG ON { <filespec> [ ,...n ] } ] }
]
[ COLLATE collation_name ]
[ WITH <external_access_option> ]
]
[;]
To attach a database
CREATE DATABASE database_name
ON <filespec> [ ,...n ]
FOR { ATTACH [ WITH <service_broker_option> ]
| ATTACH_REBUILD_LOG }
[;]
<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 | % ] ]
) [ ,...n ]
}
<filegroup> ::=
{
FILEGROUP filegroup_name [ CONTAINS FILESTREAM ] [ DEFAULT ]
<filespec> [ ,...n ]
}
<external_access_option> ::=
{
[ DB_CHAINING { ON | OFF } ]
[ , TRUSTWORTHY { ON | OFF } ]
}
<service_broker_option> ::=
{
ENABLE_BROKER
| NEW_BROKER
| ERROR_BROKER_CONVERSATIONS
}
Create a database snapshot
CREATE DATABASE database_snapshot_name
ON
(
NAME = logical_file_name,
FILENAME ='os_file_name'
) [ ,...n ]
AS SNAPSHOT OF source_database_name
[;]
Аргументы
database_name
Имя новой базы данных. Имена баз данных должны быть уникальны внутри экземпляра SQL Server и соответствовать правилам для идентификаторов.Аргумент database_name может иметь максимальную длину 128 символов, если для файла журнала не указано логическое имя. Если логическое имя файла не указано, то SQL Server формирует для журнала имена logical_file_name и os_file_name путем добавления суффикса к database_name. Это ограничивает длину аргумента database_name 123 символами, чтобы формируемое логическое имя файла было не длиннее 128 символов.
Если имя файла данных не указано, то SQL Server использует аргумент database_name в качестве имен logical_file_name и os_file_name. Путь по умолчанию берется из реестра. Его можно изменить в «Свойствах сервера» (страница «Параметры базы данных») в Management Studio. Изменение пути по умолчанию требует перезапуска SQL Server.
ON
Указывает, что дисковые файлы, используемые для хранения разделов данных в базе данных, определяются явно. Параметр ON необходимо применять, если за ним следует список элементов <filespec> с разделителями-запятыми, которые определяют файлы данных первичной файловой группы. За списком файлов в первичной файловой группе может следовать необязательный список элементов <filegroup> с разделителями-запятыми, которые определяют файловые группы пользователей и принадлежащие им файлы.PRIMARY
Указывает, что связанный список <filespec> определяет первичный файл. Первый файл, указанный в элементе <filespec> в первичной файловой группе, становится первичным файлом. В базе данных может быть только один первичный файл. Дополнительные сведения см. в разделе Архитектура файлов и файловых групп.Если параметр PRIMARY не указан, то первый файл списка в инструкции CREATE DATABASE становится первичным файлом.
LOG ON
Указывает, что дисковые файлы, используемые для хранения журнала базы данных, то есть файлы журналов, определяются явно. За параметром LOG ON следует список элементов <filespec> с разделителями-запятыми, которые определяют файлы журналов. Если параметр LOG ON не указан, автоматически создается один файл журнала, размер которого определяется большей из следующих двух величин: 512 КБ или 25 процентов от суммы размеров всех файлов с данными в базе данных. Этот файл помещается в местоположение для журнала по умолчанию. Сведения об этом местоположении см. в разделе Как просмотреть или изменить расположения по умолчанию для файлов данных и журнала (среда SQL Server Management Studio).Параметр LOG ON не может указываться для моментального снимка базы данных.
COLLATE collation_name
Задает параметры сортировки по умолчанию для базы данных. Именем параметров сортировки может быть либо имя параметров сортировки Windows, либо имя параметров сортировки SQL. Если параметр не указан, базе данных назначаются параметры сортировки по умолчанию для экземпляра SQL Server. Имя параметров сортировки не может указываться для моментального снимка базы данных.Имя параметров сортировки не может указываться с предложениями FOR ATTACH и FOR ATTACH_REBUILD_LOG. Дополнительные сведения о способах изменения параметров сортировки подсоединенной базы данных см. на веб-сайте корпорации Майкрософт.
Список имен параметров сортировки Windows и SQL см. в разделе COLLATE (Transact-SQL).
FOR ATTACH [ WITH <параметр_service_broker> ]
Указывает, что база данных создана путем присоединения существующего набора файлов операционной системы. Должен существовать элемент <filespec>, который указывает первичный файл. Кроме этого элемента, необходимы только элементы <filespec>, предназначенные для файлов, пути которых отличны от путей, существовавших при создании или последнем присоединении базы данных. Для таких файлов должен быть определен элемент <filespec>.Для параметра FOR ATTACH необходимо выполнение следующих условий.
Должны быть доступны все файлы данных (MDF и NDF).
Если существует несколько файлов журналов, все они должны быть доступны.
Если база данных, доступная для чтения и записи, располагает единственным файлом журнала, который недоступен в текущий момент, а также если база данных была закрыта в отсутствие пользователей или открытых транзакций перед операцией присоединения, то параметр FOR ATTACH автоматически перестраивает файл журнала и обновляет первичный файл. Однако журнал невозможно перестроить в базе данных, доступной только для чтения, так как нельзя обновить первичный файл. Поэтому, если присоединяется база данных только для чтения, журнал которой недоступен, необходимо указать в предложении FOR ATTACH файлы журналов или файлы.
Примечание База данных, созданная в более поздней версии SQL Server, не может быть присоединена в ранних версиях. Чтобы база данных-источник могла быть присоединена к SQL Server 2008, она должна иметь версию не ниже 80 (SQL Server 2000). Для баз данных SQL Server 2000 и SQL Server 2005, имеющих уровень совместимости менее 80, при присоединении будет установлен уровень совместимости 80.
В SQL Server любые полнотекстовые файлы, являющиеся частью присоединяемой базы данных, будут присоединены вместе с базой данных. Чтобы задать новый путь полнотекстового каталога, следует указать новое местоположение без имени полнотекстового файла операционной системы. Дополнительные сведения см. в разделе «Примеры».
Параметр FOR ATTACH не может указываться для моментального снимка базы данных.
Если в базе данных используется компонент Service Broker, в предложении FOR ATTACH следует использовать WITH <параметр_service_broker>:
<service_broker_option>
Управляет доставкой сообщений компонента Service Broker и идентификатором компонента Service Broker для базы данных. Параметры компонента Service Broker можно указать только при использовании параметра FOR ATTACH.ENABLE_BROKER
Определяет, что для указанной базы данных включен компонент Service Broker. Это означает, что происходит запуск доставки сообщений и параметру is_broker_enabled задается значение true в представлении каталога sys.databases. В базе данных сохраняется существующий идентификатор компонента Service Broker.NEW_BROKER
Создает новое значение service_broker_guid в представлении каталога sys.databases и в восстановленной базе данных, после чего завершает все конечные точки диалога, очищая их. Посредник включен, но сообщения удаленным конечным точкам диалога не посылаются. Все маршруты, ссылающиеся на старый идентификатор компонента Service Broker, необходимо создать повторно с новым идентификатором.ERROR_BROKER_CONVERSATIONS
Завершает все диалоги, находящиеся в состоянии ошибки, которые были присоединены к базе данных или восстановлены. Посредник отключается до завершения этой операции, после чего вновь включается. В базе данных сохраняется существующий идентификатор компонента Service Broker.
Дополнительные сведения см. в разделе Управление идентификационными данными компонента Service Broker.
Дополнительные сведения о разрешениях на доступ к файлам, которые устанавливаются каждый раз во время отсоединения и присоединения базы данных, см. в разделе Защита данных и файлов журналов.
При подключении реплицируемой базы данных, которая была скопирована, а не отсоединена, необходимо учитывать следующее.
При подключении базы данных к тому же экземпляру и версии сервера, к которому была подключена оригинальная база данных, не требуется никаких дополнительных действий.
При подключении базы данных к обновленной версии того же экземпляра сервера необходимо запустить процедуру sp_vupgrade_replication для обновления репликации по завершении операции подключения.
При подключении базы данных к другому экземпляру сервера, то независимо от его версии необходимо запустить процедуру sp_removedbreplication для удаления репликации по завершении операции подключения.
Примечание Присоединение работает с форматом хранения vardecimal, но при этом компонент SQL Server Database Engine должен быть обновлен по крайней мере до версии SQL Server 2005 с пакетом обновления 2 (SP2). Присоединение баз данных, использующих формат хранения vardecimal версий ранее SQL Server невозможно. Дополнительные сведения о формате хранения vardecimal см. в разделе Хранение десятичных данных в виде значений переменной длины.
Сведения об обновлении базы данных с помощью присоединения см. в разделе Как обновить базу данных при помощи отсоединения и присоединения (Transact-SQL).
Примечание по безопасности Рекомендуется не присоединять базы данных, полученные из неизвестных или ненадежных источников. В этих базах данных может содержаться вредоносный код, вызывающий выполнение непредусмотренных инструкций Transact-SQL или появление ошибок из-за изменения схемы или физической структуры базы данных. Прежде чем работать с базой данных, полученной из ненадежного источника, выполните для нее инструкцию DBCC CHECKDB на тестовом сервере, а также изучите исходный код в базе данных, например хранимые процедуры и другой пользовательский код.
FOR ATTACH_REBUILD_LOG
Указывает, что база данных создана путем присоединения существующего набора файлов операционной системы. Этот параметр применяется только в базах данных, доступных для чтения и записи. Должен существовать элемент <filespec>, который указывает первичный файл. Если один или несколько файлов журналов транзакций отсутствуют, то файл журнала перестраивается. ATTACH_REBUILD_LOG автоматически создает новый файл журнала с размером 1 МБ. Этот файл помещается в местоположение для журнала по умолчанию. Сведения об этом местоположении см. в разделе Как просмотреть или изменить расположения по умолчанию для файлов данных и журнала (среда SQL Server Management Studio).Примечание Если файлы журналов доступны, компонент Database Engine будет использовать их, а не перестраивать файлы журналов.
Для параметра FOR ATTACH_REBUILD_LOG необходимо следующее.
Чистое завершение работы базы данных.
Должны быть доступны все файлы данных (MDF и NDF).
Важно! Эта операция разрывает цепочку резервных копий журнала. Рекомендуется выполнить полное резервное копирование базы данных после завершения операции. Дополнительные сведения см. в разделе BACKUP (Transact-SQL).
Как правило, параметр FOR ATTACH_REBUILD_LOG используется при копировании базы данных, доступной для чтения и записи и обладающей большим журналом, на другой сервер, где копия будет использоваться преимущественно или исключительно для операций чтения. Поэтому для журнала требуется меньше места, чем в случае исходной базы данных.
Параметр FOR ATTACH_REBUILD_LOG не может указываться для моментального снимка базы данных.
Дополнительные сведения о присоединении и отсоединении баз данных см. в разделе Присоединение и отсоединение баз данных.
<filespec>
Управляет свойствами файла.NAME logical_file_name
Задает логическое имя файла. Параметр NAME требуется при указании параметра FILENAME во всех случаях, кроме указания одного из предложений FOR ATTACH. Файловая группа FILESTREAM не может иметь имя PRIMARY.- logical_file_name
Логическое имя, используемое в SQL Server при указании ссылки на файл. Аргумент Logical_file_name должен быть уникальным в базе данных и должен соответствовать правилам для идентификаторов. Имя может быть символом или константой Юникода, а также обычным идентификатором или идентификатором с разделителями.
- logical_file_name
FILENAME { 'os_file_name' | 'filestream_path' }
Задает имя файла в операционной системе (физическое имя).'os_file_name'
Путь и имя файла, используемые операционной системой при создании файла. Файл должен находиться на одном из следующих устройств: на локальном сервере, где установлен SQL Server, в сети хранения данных [SAN] или в сети на основе iSCSI. Указанный путь должен существовать до выполнения инструкции CREATE DATABASE. Дополнительные сведения см. в подразделе «Файлы и файловые группы базы данных» раздела «Примечания».Параметры SIZE, MAXSIZE и FILEGROWTH недоступны, если путь к файлу указан в формате UNC.
Если файл находится в необработанной секции, аргумент os_file_name должен указывать только букву диска существующей необработанной секции. В каждой необработанной секции может быть создан только один файл.
Файлы данных не следует размещать в файловых системах со сжатием, за исключением случаев, когда файлы являются вторичными и доступны только для чтения или вся база данных доступна только для чтения. Файлы журналов ни в коем случае не должны размещаться в сжатых файловых системах. Дополнительные сведения см. в разделе Сжатие и файловые группы только для чтения.
'filestream_path'
Для файловой группы FILESTREAM параметр FILENAME указывает путь, где будут храниться данные FILESTREAM. Должен существовать путь вплоть до последнего каталога, но последний каталог существовать не должен. Например, если указать путь «C:\MyFiles\MyFilestreamData», папка «C:\MyFiles» должна существовать до запуска инструкции ALTER DATABASE, а папка «MyFilestreamData» — не должна.Файловую группу и файл (<filespec>) необходимо создавать в одной инструкции. Для файловой группы FILESTREAM может быть только один файл (<filespec>,).
Свойства SIZE, MAXSIZE и FILEGROWTH к файловой группе FILESTREAM не относятся.
SIZE size
Указывает размер файла.Параметр SIZE не может указываться, если аргумент os_file_name задан как путь в формате UNC. Свойство SIZE к файловой группе FILESTREAM не применяется.
size
Задает начальный размер файла.Если для первичного файла не задан аргумент size, компонент Database Engine использует размер первичного файла в базе данных model. Если указан вторичный файл данных или журнала, но параметр size для файла не указан, компонент Database Engine задает размер файла равным 1 МБ. Размер, указанный для первичного файла, не должен быть меньше размера первичного файла базы данных model.
Можно использовать суффиксы килобайт (KB), мегабайт (MB), гигабайт (GB) и терабайт (TB). По умолчанию — MБ. Укажите целое число (без дробной части). Аргумент Size имеет тип integer. Для значений, превышающих 2 147 483 647, используйте более крупные единицы измерения.
MAXSIZE max_size
Задает максимальный размер, до которого может расти файл. Параметр MAXSIZE нельзя указывать, если аргумент os_file_name задан как путь в формате UNC. Свойство MAXSIZE к файловой группе FILESTREAM не применяется.- max_size
Максимальный размер файла. Можно использовать суффиксы KB, MB, GB и TB. По умолчанию — MБ. Укажите целое число (без дробной части). Если аргумент max_size не указан, размер файла будет увеличиваться до заполнения диска. Аргумент Max_size имеет тип integer. Для значений, превышающих 2 147 483 647, используйте более крупные единицы измерения.
- max_size
UNLIMITED
Указывает, что файл может расти вплоть до заполнения диска. В SQL Server файл журнала, для которого задано неограниченное увеличение размера, имеет максимальный размер 2 ТБ, а файл данных — 16 ТБ.FILEGROWTH growth_increment
Задает автоматическое приращение размера файла. Значение параметра FILEGROWTH для файла не может превосходить значение параметра MAXSIZE. Параметр FILEGROWTH нельзя указывать, если аргумент os_file_name задан как путь в формате UNC. Свойство FILEGROWTH к файловой группе FILESTREAM не применяется.growth_increment
Объем пространства, добавляемого к файлу каждый раз, когда требуется увеличение пространства.Значение может быть указано в килобайтах, мегабайтах, гигабайтах, терабайтах или процентах (%). Если указано число без суффикса MB, KB или %, то по умолчанию используется MB. Если размер указан в процентах (%), то шаг роста это заданная часть в процентах от размера файла во время этого файла. Указанный размер округляется до ближайших 64 КБ.
Значение 0 указывает, что автоматическое приращение отключено и добавление пространства запрещено.
Если параметр FILEGROWTH не задан, значением по умолчанию является 1 МБ для файлов данных и 10% для файлов журналов, минимальное значение — 64 КБ.
Примечание В SQL Server приращение размера по умолчанию для файлов данных изменилось с 10% на 1 МБ. Значение по умолчанию для файлов журналов (10%) осталось неизменным.
<filegroup>
Управляет свойствами файловой группы. Файловая группа не может указываться для моментального снимка базы данных.FILEGROUP filegroup_name
Логическое имя файловой группы.filegroup_name
Аргумент filegroup_name должен быть уникальным в базе данных и не может быть именем PRIMARY или PRIMARY_LOG, предоставленным системой. Имя может быть символом или константой Юникода, а также обычным идентификатором или идентификатором с разделителями. Имя должно соответствовать правилам для идентификаторов.CONTAINS FILESTREAM
Указывает, что файловая группа хранит большие двоичные объекты (BLOB) FILESTREAM в файловой системе.DEFAULT
Задает именованную файловую группу как файловую группу по умолчанию в базе данных.
<external_access_option>
Управляет внешним доступом к базе данных и из базы данных.DB_CHAINING { ON | OFF }
Если указано значение ON, то база данных может быть источником или целевой базой данных в межбазовой цепочке владения.Если задано значение OFF, то база данных не может участвовать в межбазовых цепочках владения. Значение по умолчанию — OFF.
Важно! Экземпляр SQL Server использует этот параметр, если параметр сервера cross db ownership chaining имеет значение 0 (OFF). Если параметр cross db ownership chaining имеет значение 1 (ON), то все пользовательские базы данных могут участвовать в межбазовых цепочках владения, вне зависимости от значения этого параметра. Этот параметр задается с помощью процедуры sp_configure.
Для задания этого параметра необходимо членство в предопределенной роли сервера sysadmin. Параметр DB_CHAINING не может устанавливаться для системных баз данных: master, model, tempdb.
Дополнительные сведения см. в разделе Цепочки владения.
TRUSTWORTHY { ON | OFF }
Если задано значение ON, то модули базы данных (например, представления, определяемые пользователем функции и хранимые процедуры), в которых используется контекст олицетворения, могут обращаться к ресурсам, расположенным за пределами базы данных.Если задано значение OFF, то модули базы данных в контексте олицетворения не могут обращаться к ресурсам, расположенным за пределами базы данных. Значение по умолчанию — OFF.
Параметр TRUSTWORTHY устанавливается в значение OFF при каждом присоединении базы данных.
По умолчанию для всех системных баз данных, кроме msdb, параметру TRUSTWORTHY задано значение OFF. Это значение не может быть изменено для баз данных model и tempdb. Рекомендуется никогда не задавать параметру TRUSTWORTHY значение ON для базы данных master.
Для задания этого параметра необходимо членство в предопределенной роли сервера sysadmin.
database_snapshot_name
Имя нового моментального снимка базы данных. Имена моментальных снимков базы данных должны быть уникальными внутри экземпляра SQL Server и должны соответствовать правилам для идентификаторов. Максимальная длина аргумента database_snapshot_name равна 128 символов.ON ( NAME =logical_file_name, FILENAME = 'os_file_name') [ ,... n ]
При создании моментального снимка базы данных указывает список файлов в базе данных-источнике. Для работы моментального снимка все файлы данных должны задаваться отдельно. Однако не разрешается указывать файлы журналов для моментальных снимков базы данных. В моментальных снимках базы данных не поддерживаются файловые группы FILESTREAM. Если файл данных FILESTREAM задействован в предложении CREATE DATABASE ON, выполнение этой инструкции завершится сбоем и приведет к возникновению ошибки.Описания параметров NAME и FILENAME и их значений см. в описаниях соответствующих значений <filespec>.
Примечание При создании моментального снимка базы данных не разрешается применять другие параметры <filespec> и ключевое слово PRIMARY.
AS SNAPSHOT OF source_database_name
Обозначает, что создаваемая база данных является моментальным снимком базы данных-источника, указанной аргументом source_database_name. Моментальный снимок и база данных-источник должны находиться в одном экземпляре.Дополнительные сведения см. в подразделе «Моментальные снимки базы данных» раздела «Примечания».
Замечания
Резервную копию базы данных master необходимо создавать каждый раз при создании, изменении или удалении пользовательской базы данных.
Инструкция CREATE DATABASE должна выполняться в режиме автоматической фиксации (режим управления транзакциями по умолчанию) и не может применяться в явной или неявной транзакции. Дополнительные сведения см. в разделе Автоматическая фиксация транзакций.
Одной инструкцией CREATE DATABASE можно создать базу данных и файлы, в которых хранится база данных. Инструкция CREATE DATABASE реализуется в SQL Server с использованием следующих шагов.
Компонент SQL Server использует копию базы данных model для инициализации базы данных и ее метаданных.
Базе данных назначается идентификатор GUID компонента Service Broker.
Затем компонент Database Engine заполняет остальную часть базы данных пустыми страницами, за исключением страниц, содержащих внутренние данные с описанием способа использования пространства в базе данных. Дополнительные сведения см. в разделе Инициализация файлов базы данных.
В экземпляре SQL Server может быть задано не более 32 767 баз данных.
У каждой базы данных есть владелец, который может выполнять специальные действия в базе данных. Владельцем является пользователь, создавший базу данных. Владельца базы данных можно изменить с помощью процедуры sp_changedbowner.
Файлы и файловые группы базы данных
В каждой базе данных имеется по крайней мере 2 файла (первичный файл и файл журнала транзакций) и по крайней мере одна файловая группа. Для каждой базы данных может указываться не более 32 767 файлов и 32 767 файловых групп. Дополнительные сведения см. в разделе Архитектура файлов и файловых групп.
При создании базы данных файлы данных следует делать как можно большего размера, в соответствии с максимальным предполагаемым объемом данных в базе данных. Дополнительные сведения см. в разделе Использование файлов и файловых групп для контроля роста базы данных.
Для хранения файлов базы данных SQL Server рекомендуется использовать сеть хранения данных (SAN), сеть на основе iSCSI или локально подключенный диск, так как в этой конфигурации достигаются оптимальные производительность и надежность SQL Server.
Моментальные снимки базы данных
С помощью инструкции CREATE DATABASE можно создать статическое представление, доступное только для чтения (моментальный снимок базы данных) существующей базы данных (базы данных-источника). Моментальный снимок базы данных согласован с базой данных-источником на уровне транзакций в том виде, в котором она существовала в момент создания моментального снимка. База данных-источник может иметь несколько моментальных снимков.
Примечание |
---|
При создании моментального снимка инструкция CREATE DATABASE не может обращаться к файлам журналов, файлам вне сети, восстанавливаемым файлам и несуществующим файлам. |
Если создание моментального снимка базы данных не удается, моментальный снимок помечается как подозрительный и подлежит удалению. Дополнительные сведения см. в разделе DROP DATABASE (Transact-SQL).
Каждый моментальный снимок существует до тех пор, пока не будет удален с помощью инструкции DROP DATABASE.
Дополнительные сведения см. в разделах Моментальные снимки базы данных и Ограничения и требования к моментальным снимкам базы данных.
Параметры базы данных
Каждый раз при создании базы данных автоматически устанавливаются несколько параметров базы данных. Список этих параметров и их значения по умолчанию см. в разделе Установка параметров базы данных. Эти параметры можно изменить с использованием инструкции ALTER DATABASE.
База данных model и создание новых баз данных
Все пользовательские объекты в базе данных model копируются во вновь создаваемые базы данных. В базу данных model можно добавлять любые объекты, такие как таблицы, представления, хранимые процедуры, типы данных и т. д., которые войдут в состав всех вновь созданных баз данных.
Если инструкция CREATE DATABASE database_name указана без дополнительных параметров размера, то создается первичный файл данных того же размера, что и первичный файл в базе данных model.
Если не указан параметр FOR ATTACH, то каждая новая база данных наследует значения параметров из базы данных model. Например, параметру базы данных auto shrink задано значение true в базе данных model и всех создаваемых базах данных. Если изменить параметры в базе данных model, они будут использоваться при создании новых баз данных. Операции, вносящие изменения в базу данных model, не влияют на существующие базы данных. Если параметр FOR ATTACH задан в инструкции CREATE DATABASE, то новая база данных наследует значения параметров исходной базы данных.
Просмотр сведений о базе данных
Для возврата сведений о базах данных, файлах и файловых группах можно использовать представления каталогов, системные функции и системные хранимые процедуры. Дополнительные сведения см. в разделе Просмотр метаданных базы данных.
Разрешения
Необходимо разрешение CREATE DATABASE, CREATE ANY DATABASE или ALTER ANY DATABASE.
В целях сохранения управления над использованием диска в экземпляре SQL Server разрешение на создание баз данных обычно предоставляется небольшому числу учетных записей входа.
Разрешения на файлы данных и журналов
В SQL Server для файлов данных и журналов каждой базы данных заданы некоторые разрешения. Следующие разрешения задаются при применении следующих операций к базе данных:
Создание |
Изменение для добавления нового файла |
Присоединение |
Создание резервной копии |
Отсоединение |
Восстановление |
Эти разрешения предотвращают случайное повреждение файлов, хранящихся в каталоге с открытыми разрешениями. Дополнительные сведения см. в разделе Защита данных и файлов журналов.
Примечание |
---|
Microsoft SQL Server 2005 Express Edition не задает разрешения на файлы данных и файлы журнала. |
Примеры
А. Создание базы данных без указания файлов
В следующем примере создается база данных mytest и соответствующие первичный файл и файл журнала транзакций. Поскольку инструкция не включает элементы <filespec>, файл базы данных-источника имеет тот же размер, что и первичный файл базы данных model. Журнал транзакций устанавливается в соответствии с большим из следующих значений: 512 КБ или 25 % от размера первичного файла данных. Поскольку параметр MAXSIZE не задан, файлы могут увеличиваться до заполнения всего свободного места на диске. Этот пример также демонстрирует, как удалить базу данных mytest, если она существует, перед созданием базы данных mytest.
USE master;
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
Б. Создание базы данных, в которой заданы файлы данных и журнала транзакций
В следующем примере создается база данных Sales. Ключевое слово PRIMARY не использовано, поэтому первый файл (Sales_dat) становится первичным файлом. Поскольку в параметре SIZE для файла Sales_dat не заданы суффиксы MB и KB, используется значение MB и пространство выделяется в мегабайтах. Место для файла Sales_log выделено в мегабайтах, потому что суффикс MB явно указан в параметре SIZE.
USE master;
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO
В. Создание базы данных, в которой указаны несколько файлов данных и журналов транзакций
Следующий пример создает базу данных Archive, имеющую 3 файла с данными объемом по 100-MB каждый и два файла журнала транзакций по 100-MB. Первичный файл является первым файлом в списке и явно задан ключевым словом PRIMARY. Файлы журналов транзакций заданы следующими ключевыми словами LOG ON. Обратите внимание на расширения, используемые для файлов в параметре FILENAME: .mdf для первичных файлов данных, .ndf для вторичных файлов данных и .ldf для файлов журнала транзакций. В этом примере база данных размещается на диске D, а не вместе с базой данных 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
Г. Создание базы данных с файловыми группами
В следующем примере создается база данных Sales, в которой есть следующие файловые группы.
Первичная файловая группа с файлами Spri1_dat и Spri2_dat. Для этих файлов задана величина приращения FILEGROWTH, равная 15%.
Файловая группа с именем SalesGroup1 и файлами SGrp1Fi1 и SGrp1Fi2.
Файловая группа с именем SalesGroup2 и файлами SGrp2Fi1 и SGrp2Fi2.
В этом примере файлы данных и журналов размещаются на различных дисках с целью повышения производительности.
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
Д. Присоединение базы данных
В следующем примере база данных Archive, созданная в примере Г, отсоединяется, а затем присоединяется с помощью предложения FOR ATTACH. База данных Archive определена как база данных с несколькими файлами данных и журналов. Однако поскольку местоположение файлов не изменилось со времени их создания, в предложении FOR ATTACH должен быть задан только первичный файл. Начиная с SQL Server 2005 любые полнотекстовые файлы, являющиеся частью присоединяемой базы данных, будут присоединены вместе с базой данных.
USE master;
GO
sp_detach_db Archive;
GO
CREATE DATABASE Archive
ON (FILENAME = 'D:\SalesData\archdat1.mdf')
FOR ATTACH ;
GO
Е. Создание моментального снимка базы данных
В следующем примере создается моментальный снимок базы данных sales_snapshot0600. Моментальный снимок базы данных предназначен только для чтения, поэтому нельзя задать файл журнала. В соответствии с синтаксисом задается каждый файл базы данных-источника, а файловые группы не указываются.
База данных-источник для этого примера — Sales, созданная в примере Г.
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
Ж. Создание базы данных и назначение имени и параметров сортировки
В следующем примере создается база данных MyOptionsTest. Указано имя параметров сортировки, а параметрам TRUSTYWORTHY и DB_CHAINING присвоено значение 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
З. Присоединение перемещенного полнотекстового каталога
В следующем примере присоединяется полнотекстовый каталог AdvWksFtCat вместе с файлами данных и журнала базы данных AdventureWorks2008R2. В этом примере полнотекстовый каталог перемещается из расположения по умолчанию в новое место хранения c:\myFTCatalogs. Файлы данных и журналов остаются в расположениях по умолчанию.
USE master;
GO
--Detach the AdventureWorks2008R2 database
sp_detach_db AdventureWorks2008R2;
GO
-- Physically move the full text catalog to the new location.
--Attach the AdventureWorks2008R2 database and specify the new location of the full-text catalog.
CREATE DATABASE AdventureWorks2008R2 ON
(FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_Data.mdf'),
(FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_log.ldf'),
(FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')
FOR ATTACH;
GO
И. Создание базы данных, имеющей файловую группу строк и две файловые группы FILESTREAM
В следующем примере создается база данных FileStreamDB. Эта база данных создается с одной файловой группой строк и двумя файловыми группами FILESTREAM. Каждая файловая группа содержит один файл.
Группа FileStreamDB_data содержит данные строк. Она содержит один файл — FileStreamDB_data.mdf, расположенный в месте по умолчанию.
Группа FileStreamPhotos содержит данные FILESTREAM. Она содержит один контейнер данных FILESTREAM — FSPhotos, расположенный в папке C:\MyFSfolder\Photos. Она отмечена как файловая группа FILESTREAM по умолчанию.
Группа FileStreamResumes содержит данные FILESTREAM. Она содержит один контейнер данных FILESTREAM — FSResumes, расположенный в папке C:\MyFSfolder\Resumes.
USE master;
GO
IF DB_ID (N'FileStreamDB') IS NOT NULL
DROP DATABASE FileStreamDB;
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, MAXSIZE, FILEGROWTH should not be specified here.
-- If they are specified an error will be raised.
),
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
См. также