Изменить логическое имя файлов базы sql
Язык Transact-SQL поддерживает изменение структуры следующих объектов базы данных:
В последующих двух разделах описывается изменение первых двух объектов из этого списка: баз данных и таблиц. Изменение структуры последних четырех объектов этого списка будет описано при их обсуждении в следующих статьях.
Изменить имя базы данных, физическое имя и логическое имя файла sqlserver
Недавно возникла необходимость изменить имя базы данных, физическое имя файла и логическое имя в проекте. Как показано ниже, база данных ty_cms_lz Физическое имя файла ty_cms_lz.mdf с ty_cms_lz_0.ldf , Логическое имя файла lhc_cms с lhc_cms_log 。
Это выглядит неловко, и базу данных легко перепутать. Обычно при создании новой базы данных логическое имя и физическое имя файла соответствуют имени базы данных. Недавно созданный как показано ниже ty_test база данных.
Чтобы соответствовать этим именам, я буду следовать шагам ниже:
- Изменить имя базы данных
ty_cms_lz => ty_cms_mc - Изменить логическое имя
lhc_cms => ty_cms_mc
lhc_cms_log => ty_cms_mc_log - Изменить физическое имя файла
ty_cms_lz.mdf => ty_cms_mc.mdf
ty_cms_lz_0.mdf => ty_cms_mc_log_mdf
Установка опций базы данных
Для установки различных опций базы данных используется предложение SET инструкции ALTER DATABASE. Некоторым опциям можно присвоить только значения ON или OFF, но для большинства из них предоставляется выбор из списка возможных значений. Каждый параметр базы данных имеет значение по умолчанию, которое устанавливается в базе данных model. Поэтому значения определенных опций по умолчанию можно модифицировать, изменив соответствующим образом базу данных model.
Все опции, значения которых можно изменять, можно разбить на несколько групп, наиболее важными из которых являются опции состояния, опции автоматических действий и опции SQL.
Опции состояния управляют следующими возможностями:
доступом пользователей к базе данным (это опции single_user, restricted_user и multi_user);
статусом базы данных (это опции online, offline и emergency);
режимом чтения и записи (опции read_only и read_write).
Опции автоматических операций управляют, среди прочего, остановом базы данных (опция auto_close) и способом создания статистики индексов (опции auto_create_statistics и auto_update_statistics).
Опции SQL управляют соответствием базы данных и ее объектов стандарту ANSI. Значения всех операторов SQL можно узнать посредством функции DATABASEPROPERTY, а редактировать - с помощью инструкции ALTER DATABASE.
Опции восстановления full, bulk-logged и simple управляют процессом восстановления базы данных.
Изменить логическое имя
Оператор сценария выглядит следующим образом:
После завершения модификации мы можем снова проверить свойства базы данных и увидеть, что логическое имя было изменено, как показано ниже:
Переименование таблиц и других объектов баз данных
Для изменения имени существующей таблицы (и любых других объектов базы данных, таких как база данных, представление или хранимая процедура) применяется системная процедура sp_rename. В примере ниже показано использование этой системной процедуры:
Использовать системную процедуру sp_rename настоятельно не рекомендуется, поскольку изменение имен объектов может повлиять на другие объекты базы данных, которые ссылаются на них. Вместо этого следует удалить объект и воссоздать его с новым именем.
Удаление объектов баз данных
Все инструкции Transact-SQL для удаления объектов базы данных имеют следующий общий вид:
Для каждой инструкции CREATE object для создания объекта имеется соответствующая инструкция DROP object для удаления. Инструкция для удаления одной или нескольких баз данных имеет следующий вид:
Эта инструкция безвозвратно удаляет базу данных из системы баз данных. Для удаления одной или нескольких таблиц применяется следующая инструкция:
При удалении таблицы удаляются все ее данные, индексы и триггеры. Но представления, созданные по удаленной таблице, не удаляются. Таблицу может удалить только пользователь, имеющий соответствующие разрешения.
Кроме объектов DATABASE и TABLE, в параметре objects инструкции DROP можно указывать, среди прочих, следующие объекты:
Мне нужно переименовать файл базы данных. Возможно ли это через среду SQL Server Management Studio?
FYI, у меня нет разрешений на базовое поле.
Edit: мне также нужно изменить местоположение файла.
Да, вы можете сделать это, если у вас есть право отсоединить и повторно присоединить базу данных, и если вы найдете способ физически переименовать файлы на диске:
1) выдает эти команды
(как DGGenuine указал в комментарии: ваш-новый-файл-на диске.МДФ должно быть полное имя файла, включая путь на диске)
2) отсоединить базу данных
3) переименуйте файлы на диске
4) повторно подключите базу данных еще раз
- возьмите полную резервную копию базы данных.
- брось его.
- восстановить его, указав разные имена файлов и пути в диалоговом окне восстановления.
вы можете сделать это без разрешений на базовую файловую систему, поскольку вы не перемещаете физический файл, вы просите SQL Server создать новый файл от вашего имени и скопировать данные в него из резервной копии.
чтобы задать новые имена файлов и пути, перейдите на вкладку Параметры диалог восстановления. Вы даже получаете диалоговое окно просмотра папок, в котором отображается представление SQL Server о файловой системе, а не ваше.
минимальные разрешения, необходимые для этой процедуры:
- db_backupoperator роль в базе данных
- dbcreator роль сервера
это изменит только внутреннее определение имени файла SQL Server, оно не изменит фактическое имя файла в файловой системе ОС.
вы можете использовать sp_detach_db, чтобы отключить базу данных. найдите файлы и переименуйте их, переместите их. затем используйте sp_attach_db для их повторного подключения из нового места. вот как я это делаю.
с наилучшими пожеланиями, Дон!--1-->
да и нет. Вы можете изменить имя файла объекта базы данных:
это обновит Главный каталог, так что при первом следующем событии открытия базы данных будет просмотрено новое имя файла. Но в Transact-SQL нет прямого способа переименования/перемещения файла.
вы можете использовать xp_cmdshell для переименования файла или развернуть сборку CLR с включенным EXTERNAL_ACCESS, которая может выполнять операцию переименования/перемещения файла.
запустите это в SSMS в текстовом режиме, чтобы получить скрипт T-SQL и команды DOS, которые переименуют все ваши.файлы ndf. Предполагается, что вы хотите, чтобы ваши файлы назывались так же, как ваши файловые группы минус префикс 'FG_', который мне нравится использовать в моих файловых группах.
будьте осторожны при использовании опции переименовать из контекстного меню которые появляются при щелчке правой кнопкой мыши по базе данных в Management Studio. Этот параметр не изменяет имена файлов базы данных. Изменение логических имен файлов для файлов данных и журналов вы также можете использовать интерфейс Management Studio, но, к сожалению, иногда он не работает.
давайте сделаем это правильно. он должен работать всегда.
- отключить база данных: Используя Management Studio, щелкните правой кнопкой мыши базу данных > перейдите в "задачи" > "отсоединить", нажмите кнопку ОК, чтобы отсоединить базу данных (Примечание: БД не может быть использован для отсоединения)
- переименовать физические файлы: после отсоединения базы данных Физические файлы разблокированы, и вы можете переименовать их с помощью Проводника Windows:
присоединение базы данных с новым именем: для этого используйте T SQL:
использовать [master] СОЗДАННАЯ БАЗА ДАННЫХ [SqlAndMe] ON (FILENAME = N’C:\. \NewName - . МДФ’), (FILENAME = N’C:\. \NewName_log - . ЛДФ’) ДЛЯ ATTACH
переименовать логические имена файлов: выполните этот T SQL:
использовать [NewName] Изменить базу данных [NewName] Изменить файл (NAME=N'Oldname’, NEWNAME=N'Newname’) Изменить базу данных [NewName] Изменить файл (NAME=N'Oldname_log’, NEWNAME=N'Newname_log’) Выберите имя, параметр physical_name Из [NewName].системный.database_files
Это должно сработать!
вот пример кода для ответа marc_s:
после переименования моего теста базы данных, чтобы TestSimple, я хотел переименовать его файлы. Для файла журнала работало следующее. (Для основного файла имя = часть стало Test, и Я заменил путь, который я хотел для этого файла.)
вышеизложенное изменило, какие файлы ищет SSMS, но на самом деле не переименовывает файлы. Поэтому мне пришлось сделать это через Windows.
после переименования базы данных, если мы хотим изменить данные и имя файла журнала также, мы могли бы использовать следующий шаг:
база данных живая, поэтому мне нужно будет закрыть существующие соединения.
Вы забыли упомянуть название вашей базы данных (это "мой"?).
теперь здесь вы должны вручную переместить файлы из их текущего местоположения в D:\Data\ (и не забудьте переименовать их вручную, если вы изменили их в команде изменить файл). затем вы можете вернуть базу данных в интернете:
предполагается, что учетная запись службы SQL Server имеет достаточные права на D:\Data\ папка. Если нет, вы получите ошибки в наборе онлайн команда.
можно использовать параметр отсоединить / присоединить в среде SQL Server Management Studio.
для добавления прав доступа к файлам добавьте и предоставьте право следующему локальному пользователю: SQLServerMSSQLUser$COMPUTERNAME$INSTANCENAME, где ИМЯ_КОМПЬЮТЕРА: и INSTANCENAME должен быть заменен именем компьютера и экземпляра MSSQL соответственно.
Это полная процедура для передачи базы данных и Логинов из istance в новый, сценариев Логинов и перемещения файла данных и файлов журнала в месте назначения. Все через metascripts.
извините за процедуру вне сайта, но скрипты очень длинные. Вы должны:
- Скрипт входа с оригинальным SID и ХЭШИРОВАННЫЙ пароль
- Создать скрипт для резервного копирования базы данных с помощью metascripts
- Создать скрипт для восстановления базы данных, передавая параметры перемещения с помощью снова metascripts
- Запустите сгенерированные сценарии на исходном и целевом экземпляре.
Смотрите подробности и загружайте скрипты по ссылке выше.
некоторые примечания в дополнение к процессу ALTER DATABASE:
1) Вы можете получить полный список баз данных с логическими именами и полными путями файлов MDF и LDF:
2) Вы можете вручную перемещать файлы с помощью команды CMD move:
Переместить "Источник ""Пункт Назначения"
3) Вы должны изменить путь к базе данных по умолчанию для создания новых баз данных. Путь по умолчанию получается из Windows регистратура.
вы также можете изменить с помощью T-SQL, например, чтобы установить назначение по умолчанию: D:\MSSQLData
какова правильная процедура переименования базы данных?
пример: у меня есть база данных, к которой я могу получить доступ с помощью SQL Server Management Studio и имеет имя "MyDatabase". Физических файлов базы данных
- данных mydatabase.МДФ
- MyDatabase_log.ldf
Как я могу переименовать эти логические и физические имена в "MyNewDatabase"?
спасибо за помощь
взято дословно из здесь:
есть несколько способов сделать это изменение, однако для переименования физических файлов базы данных на уровне операционной системы вам придется отключить базу данных
используйте SSMS, чтобы отключить базу данных (щелкните правой кнопкой мыши на базе данных, выберите задачи, отключите), измените имя файлов на уровне ОС,а затем включите ее.
вы можете отключить базу данных, переименовать файлы, а затем присоединить базу данных, указывающую на переименованные файлы для этого.
вы можете создать резервную копию базы данных, а затем восстановить, изменив местоположение файла во время процесса восстановления.
использование T SQL
изменение базы данных имя базы данных набора в автономном режиме GO
изменить базы данных базы данных изменить файл (название =дБ, C:\Program именем = ' Файлы\Microsoft SQL Server\MSSQL.2\MSSQL\Data\db.МДФ") ИДТИ -- при изменении файла журнала имя
изменить файл базы данных базы данных изменить (имя = db_log, именем = "C:\Program файлы\Microsoft SQL Server\MSSQL.2\MSSQL\Data\db.ЛДФ') GO
ALTER DATABASE databaseName SET ONLINE GO
будьте осторожны при использовании опции переименовать из контекстного меню которые появляются при щелчке правой кнопкой мыши по базе данных в Management Studio. Этот параметр не изменяет имена файлов базы данных. Изменение логических имен файлов для файлов данных и журналов вы также можете использовать интерфейс Management Studio, но, к сожалению, иногда он не работает.
давайте сделаем это правильно. он должен работать всегда.
- отключить база данных: Используя Management Studio, щелкните правой кнопкой мыши базу данных > перейдите в "задачи" > "отсоединить", нажмите кнопку ОК, чтобы отсоединить базу данных (Примечание: БД не может быть использован для отсоединения)
- переименовать физические файлы: после отсоединения базы данных Физические файлы разблокированы, и вы можете переименовать их с помощью Проводника Windows:
присоединение базы данных с новым именем: для этого используйте T SQL:
использовать [master] СОЗДАННАЯ БАЗА ДАННЫХ [SqlAndMe] ON (FILENAME = N’C:\. \NewName - . МДФ’), (FILENAME = N’C:\. \NewName_log - . ЛДФ’) ДЛЯ ATTACH
переименовать логические имена файлов: выполните этот T SQL:
использовать [NewName] Изменить базу данных [NewName] Изменить файл (NAME=N'Oldname’, NEWNAME=N'Newname’) Изменить базу данных [NewName] Изменить файл (NAME=N'Oldname_log’, NEWNAME=N'Newname_log’) Выберите имя, параметр physical_name Из [NewName].системный.database_files
Это должно сработать!
есть несколько способов сделать это изменение, однако для переименования физических файлов базы данных на уровне операционной системы вам придется отключить базу данных
но убедитесь, что база данных не используется.
- вы можете переименовать базу данных с помощью SSMS; rclick database > rename
- вы можете изменить логическое имя с помощью SSMS; база данных > свойства > файлы > изменить логические имена
- отсоединить базу данных с помощью SSMS; база данных > задачи > отсоединить.
- вы можете изменить имена файлов с помощью Проводника Windows (после отсоединения)
после того, как имена файлов были изменены, вы не можете использовать GUI для повторного присоединения
СОЗДАТЬ БАЗУ ДАННЫХ MyAdventureWorks
ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data - . mdf'),
(FILENAME = 'C:\MySQLServer\AdventureWorks_Log - . ldf')
ДЛЯ ПРИСОЕДИНЕНИЯ;
обновите SSMS, и все готово.
Примечание: Если вы предпочитаете вводить как можно меньше кода, как вероятный. После отсоединения базы данных используйте графический интерфейс, чтобы начать процесс повторного присоединения перед изменением имен файлов. Используйте действие " Script to. "и получить код. После изменения имен файлов с помощью Проводника Windows обновите их в коде в SSMS и запустите его.
Добавление и удаление файлов базы данных, файлов журналов и файловых групп
Добавление или удаление файлов базы данных осуществляется посредством инструкции ALTER DATABASE. Операция добавления нового или удаления существующего файла указывается предложением ADD FILE и REMOVE FILE соответственно. Кроме этого, новый файл можно определить в существующую файловую группу посредством параметра TO FILEGROUP.
В примере ниже показано добавление нового файла базы данных в базу данных SampleDb:
В этом примере инструкция ALTER DATABASE добавляет новый файл с логическим именем sampledb_dat1. Здесь же указан начальный размер файла 10 Мбайт и автоувеличение по 5 Мбайт до максимального размера 100 Мбайт. Файлы журналов добавляются так же, как и файлы баз данных. Единственным отличием является то, что вместо предложения ADD FILE используется предложение ADD LOG FILE.
Удаления файлов (как файлов базы данных, так и файлов журнала) из базы данных осуществляется посредством предложения REMOVE FILE. Удаляемый файл должен быть пустым.
Новая файловая группа создается посредством предложения CREATE FILEGROUP, а существующая удаляется с помощью предложения DELETE FILEGROUP. Как и удаляемый файл, удаляемая файловая группа также должна быть пустой.
Изменить имя базы данных
Это самый простой, просто щелкните правой кнопкой мыши на базе данных ty_cms_lz Выберите Переименовать. изменился на ty_cms_mc После, следующие шаги должны быть правильными ty_cms_mc Работать.
Хранение данных типа FILESTREAM
При описании типов данных T-SQL мы рассмотрели данные типа FILESTREAM и причины, по которым их используют. В этом разделе мы рассмотрим, как данные типа FILESTREAM можно сохранять в базе данных. Чтобы данные FILESTREAM можно было сохранять в базе данных, система должна быть должным образом инициирована. В следующем подразделе объясняется, как инициировать операционную систему и экземпляр базы данных для хранения данных типа FILESTREAM.
Инициирование хранилища FILESTREAM
Хранилище данных типа FILESTREAM требуется инициировать на двух уровнях:
для операционной системы Windows;
для конкретного экземпляра сервера базы данных.
Инициирование хранилища данных типа FILESTREAM на уровне системы осуществляется с помощью диспетчера конфигурации SQL Server Configuration Manager. Чтобы запустить диспетчер конфигурации, выполните следующую последовательность команд по умолчанию Пуск --> Все программы --> Microsoft SQL Server 2012 --> Configuration Tools . В открывшемся окне Sql Server Configuration Manager щелкните правой кнопкой пункт SQL Server Services (Службы SQL Server) и в появившемся контекстном меню выберите команду Open. В правой панели щелкните правой кнопкой экземпляр, для которого требуется разрешить хранилище FILESTREAM, и в контекстном меню выберите команду Properties. В открывшемся диалоговом окне SQL Server Properties выберите вкладку FILESTREAM:
Чтобы иметь возможность только читать данные типа FILESTREAM, установите флажок Enable FILESTREAM for Transact-SQL access (Разрешить FILESTREAM при доступе через Transact-SQL). Чтобы кроме чтения можно было также записывать данные, установите дополнительно флажок Enable FILESTREAM for file I/O streaming access (Разрешить использование FILESTREAM при доступе файлового ввода/вывода). Введите имя общей папки Windows в одноименное поле. Общая папка Windows используется для чтения и записи данных FILESTREAM, используя интерфейс API Win32. Если для возвращения пути для FILESTREAM BLOB использовать имя, то это будет имя общей папки Windows.
Диспетчер конфигурации SQL Server создаст на системе хоста новую общую папку с указанным именем. Чтобы применить изменения, нажмите кнопку OK.
Чтобы разрешить хранилище FILESTREAM, необходимо быть администратором Windows локальной системы и обладать правами администратора (sysadmin). Чтобы изменения вступили в силу, необходимо перезапустить экземпляр сервера базы данных.
Следующим шагом будет разрешить хранилище FILESTREAM для конкретного экземпляра. Мы рассмотрим, как выполнить эту задачу с помощью среды SQL Server Management Studio. (Для этого можно также воспользоваться хранимой системной процедурой sp_configure с параметром FILESTREAM ACCESS LEVEL.) Щелкните правой кнопкой требуемый экземпляр в обозревателе объектов и в появившемся контекстном меню выберите пункт Properties, в левой панели открывшегося диалогового окна Server Properties выберите пункт Advanced (Дополнительно):
После этого в правой панели из выпадающего списка выберите FILESTREAM Access Level (Уровень доступа FILESTREAM) одну из следующих опций:
Disabled
Отключено - хранилище FILESTREAM не разрешено.
Transact-SQL Access Enabled
Включен доступ с помощью Transact-SQL - к данным FILESTREAM можно обращаться посредством инструкций T-SQL.
Full Access Enabled
Включен полный доступ - к данным FILESTREAM можно обращаться как посредством инструкций T-SQL, так и через интерфейс API Win32.
Добавление файла в файловую группу
Разрешив хранилище FILESTREAM для требуемого экземпляра, можно сначала создать файловую группу для данных FILESTREAM (посредством инструкции ALTER DATABASE), а затем добавить файл в эту файловую группу, как это показано в примере ниже. (Конечно же, эту задачу также можно было бы выполнить с помощью инструкции CREATE DATABASE.)
Первая инструкция ALTER DATABASE в примере добавляет в базу данных SampleDb новую файловую группу Employee_FSGroup. Параметр CONTAINS FILESTREAM этой инструкции указывает системе, что данная файловая группа будет содержать только данные FILESTREAM. Вторая инструкция ALTER DATABASE добавляет в созданную файловую группу новый файл.
Теперь можно создавать таблицы, содержащие столбцы с типом данных FILESTREAM. Создание такой таблицы показано в примере ниже:
В этом примере таблица EmployeeInfo содержит столбец FilestreamData, тип данных которого должен быть VARBINARY(MAX). Определение такого столбца включает атрибут FILESTREAM, указывающий, что данные столбца сохраняются в файловой группе FILESTREAM. Для всех таблиц, в которых хранятся данные типа FILESTREAM, требуется наличие свойств UNIQUE ROWGUIDCOL. Поэтому таблица EmployeeInfo содержит столбец Id, определенный с использованием этих двух атрибутов.
Данные в столбце типа FILESTREAM вставляются посредством стандартной инструкции INSERT. А для считывания данных используется стандартная инструкция SELECT.
Изменить физическое имя файла
Физический файл - это обычно путь, по которому sqlserver установлен по умолчанию, как показано на следующем рисунке:
Выполните операцию в три этапа:
- Отключить базу данных
Поскольку база данных не может изменить имя физического файла в занятом состоянии, сначала необходимо разделить базу данных.
- Вручную изменить физическое имя файла
Найдите путь к физическому имени файла, щелкните правой кнопкой мыши и переименуйте, чтобы изменить.
Если база данных не отсоединена, прямое переименование сообщит о следующей ошибке:
Наконец мы проверяем базу данных ty_cms_mc Вы можете видеть, что все они были изменены.
Добавление и удаления ограничений для обеспечения целостности (ключей и проверок)
Для добавления в таблицу новых ограничений для обеспечения целостности используется параметр ADD CONSTRAINT инструкции ALTER TABLE. В примере ниже показано использование параметра ADD CONSTRAINT для добавления проверочного ограничения и определения первичного ключа таблицы:
Ограничения для обеспечения целостности можно удалить посредством предложения DROP CONSTRAINT инструкции ALTER TABLE, как это показано в примере ниже:
Определения существующих ограничений нельзя модифицировать. Чтобы изменить ограничение, его сначала нужно удалить, а потом создать новое, содержащее требуемые модификации.
Разрешение и запрещение ограничений
Как упоминалось ранее, ограничение для обеспечения целостности всегда имеет имя, которое может быть объявленным или явно посредством опции CONSTRAINT, или неявно посредством системы. Имена всех ограничений таблицы (объявленных как явно, так и неявно) можно просмотреть с помощью системной процедуры sp_helpconstraint.
В последующих операциях вставки или обновлений значений в соответствующий столбец ограничение по умолчанию обеспечивается принудительно. Кроме этого, при объявлении ограничения все существующие значения соответствующего столбца проверяются на удовлетворение условий ограничения. Начальная проверка не выполняется, если ограничение создается с параметром WITH NOCHECK. В таком случае ограничение будет проверяться только при последующих операциях вставки и обновлений значений соответствующего столбца. (Оба параметра - WITH CHECK и WITH NOCHECK - можно применять только с ограничениями проверки целостности CHECK и проверки внешнего ключа FOREIGN KEY.)
В примере ниже показано, как отключить все существующие ограничения таблицы:
Все ограничения таблицы Sales отключаются посредством ключевого слова ALL. Применять опцию NOCHECK не рекомендуется, поскольку любые подавленные нарушения условий ограничения могут вызвать ошибки при будущих обновлениях.
Добавление и удаление столбцов
Чтобы добавить новый столбец в существующую таблицу, в инструкции ALTER TABLE используется предложение ADD. В одной инструкции ALTER TABLE можно добавить только один столбец. Применение предложения ADD показано в примере ниже:
В этом примере инструкция ALTER TABLE добавляет в таблицу Employee столбец PhoneNumber. Компонент Database Engine заполняет новый столбец значениями NULL или IDENTITY или указанными значениями по умолчанию. По этой причине новый столбец должен или поддерживать значения NULL, или для него должно быть указано значение по умолчанию.
Новый столбец нельзя вставить в таблицу в какой-либо конкретной позиции. Столбец, добавляемый предложением ADD, всегда вставляется в конец таблицы.
Столбцы из таблицы удаляются посредством предложения DROP COLUMN. Применение этого предложения показано в примере ниже:
В этом коде инструкция ALTER TABLE удаляет в таблице Employee столбец PhoneNumber, который был добавлен в эту таблицу предложением ADD ранее.
Изменение базы данных
Для изменения физической структуры базы данных используется инструкция ALTER DATABASE. Язык Transact-SQL позволяет выполнять следующие действия по изменению свойств базы данных:
добавлять и удалять один или несколько файлов базы данных;
добавлять и удалять один или несколько файлов журнала;
добавлять и удалять файловые группы;
изменять свойства файлов или файловых групп;
устанавливать параметры базы данных;
изменять имя базы данных с помощью хранимой процедуры sp_rename.
Эти разные типы модификаций базы данных рассматриваются далее.
Автономные базы данных
Одна из значительных проблем с базами данных SQL Server состоит в том, что они трудно поддаются экспортированию и импортированию. Как рассматривалось ранее, базы данных можно присоединять и отсоединять, но при этом утрачиваются важные части и свойства присоединенных баз данных. (Основной проблемой в таких случаях является безопасность базы данных, в общем, и учетные записи, в частности, в которых после перемещения обычно отсутствует часть информации или содержится неправильная информация.)
Разработчики Microsoft планируют решить эти проблемы посредством использования автономных баз данных (contained databases). Автономная база данных содержит все параметры и данные, необходимые для определения базы данных, и изолирована от экземпляра Database Engine, на котором она установлена. Иными словами, база данных данного типа не имеет конфигурационных зависимостей от экземпляра и ее можно с легкостью перемещать с одного экземпляра SQL Server на другой.
По большому счету, что касается автономности, существует три вида баз данных:
полностью автономные базы данных;
частично автономные базы данных;
неавтономные базы данных.
Полностью автономными являются такие базы данных, объекты которых не могут перемещаться через границы приложения. (Граница приложения определяет область видимости приложения. Например, пользовательские функции находятся в границах приложения, в то время как функции, связанные с экземплярами сервера, находятся вне границ приложения.)
Частично автономные базы данных позволяют объектам пересекать границы приложения, в то время как неавтономные базы данных вообще не поддерживают концепции границы приложения.
В SQL Server 2012 поддерживаются частично автономные базы данных. В будущих версиях SQL Server также будет поддерживаться полная автономность. Базы данных предшествующих версий SQL Server являются неавтономными.
Рассмотрим, как создать частично автономную базу данных в SQL Server 2012. Если существующая база данных SampleDb является неавтономной (созданная, например, посредством инструкции CREATE DATABASE), с помощью инструкции ALTER DATABASE ее можно преобразовать в частично автономную, как это показано в примере ниже:
Инструкция ALTER DATABASE изменяет состояние автономности базы данных SampleDb с неавтономного на частично автономное. Это означает, что теперь система базы данных позволяет создавать как автономные, так неавтономные объекты для базы данных SampleDb. Все другие инструкции в примере являются вспомогательными для инструкции ALTER DATABASE.
Функция sp_configure является системной процедурой, с помощью которой можно, среди прочего, изменить дополнительные параметры конфигурации, такие как 'contained database authentication'. Чтобы изменить дополнительные параметры конфигурации, сначала нужно присвоить параметру 'show advanced options' значение 1, а потом переконфигурировать систему (инструкция RECONFIGURE). В конце кода этому параметру опять присваивается его значение по умолчанию - 0.
Теперь для базы данных SampleDb можно создать пользователя, не привязанного к учетной записи.
Изменение таблиц
Для модифицирования схемы таблицы применяется инструкция ALTER TABLE. Язык Transact-SQL позволяет осуществлять следующие виды изменений таблиц:
добавлять и удалять столбцы;
изменять свойства столбцов;
добавлять и удалять ограничения для обеспечения целостности;
разрешать или отключать ограничения;
переименовывать таблицы и другие объекты базы данных.
Эти типы изменений рассматриваются в последующих далее разделах.
Изменение свойств файлов и файловых групп
С помощью предложения MODIFY FILE можно выполнять следующие действия по изменению свойств файла:
изменять логическое имя файла, используя параметр NEWNAME;
увеличивать значение свойства SIZE;
изменять значение свойств FILENAME, MAXSIZE и FILEGROWTH;
отмечать файл как OFFLINE.
Подобным образом с помощью предложения MODIFY FILEGROUP можно выполнять следующие действия по изменению свойств файловой группы:
изменять логическое имя файловой группы, используя параметр NAME;
помечать файловую группу, как файловую группу по умолчанию, используя для этого параметр DEFAULT;
помечать файловую группу как позволяющую осуществлять доступ только для чтения или для чтения и записи, используя для этого параметр read_only или read_write соответственно.
Изменение свойств столбцов
Для изменения свойств существующего столбца применяется предложение ALTER COLUMN инструкции ALTER TABLE. Изменению поддаются следующие свойства столбца:
поддержка значения NULL.
Применение предложения ALTER COLUMN показано в примере ниже:
Инструкция ALTER TABLE в этом примере изменяет начальные свойства (nchar(40), значения NULL разрешены) столбца Location таблицы Department на новые (nchar(25), значения NULL не разрешены).
Читайте также: