Summary: in this tutorial, you will learn how to use the MySQL DROP DATABASE statement to delete an existing database in the server.
- Introduction to the MySQL DROP DATABASE statement
- MySQL DROP DATABASE using mysql program example
- DROP DATABASE using MySQL Workbench
- Summary
- Chapter 17 Replication
- Отсоединение базы данных с помощью sp_detach_db
- Отсоединение базы данных с помощью Management Studio
- Присоединение баз данных в MS SQL Server
- Присоединение базы данных с помощью CREATE DATABASE
- Присоединение базы данных с помощью Management Studio
- Присоединение базы данных с помощью процедуры sp_attach_db
- Synopsis
- Description
- Parameters
- Notes
- Compatibility
- Команда DELETE
- Удаление нескольких записей таблицы
- Удаление всех записей таблицы
- Заключение
- Что такое репликация базы данных?
- Компоненты репликации
- Базы данных дистрибьютора
- Типы репликации
- Моментальным снимком
- Транзакций
- Одноранговая
- Клонирование слиянием
- Репликация Active Directory
- Настройка репликации
- О чем нельзя забывать
- Заключение
Introduction to the MySQL DROP DATABASE statement
The DROP DATABASE statement drops all tables in the database and deletes the database permanently. Therefore, you need to be very careful when using this statement.
SQL (Structured Query Language) In this statement, you specify the name of the database which you want to delete after the DROP DATABASE keywords.
If you drop a database that does not exist, MySQL will issue an error.
To prevent an error from occurring if you delete a non-existing database, you can use the IF EXISTS option. In this case, MySQL will terminate the statement without issuing any error.
The DROP DATABASE statement returns the number of tables it deleted.
In MySQL, the schema is the synonym for the database. Therefore, you can use them interchangeably:
SQL (Structured Query Language) MySQL DROP DATABASE using mysql program example
mysql -u root -p Enter password: ******** Second, display all the databases using the SHOW DATABASES statement:
SQL (Structured Query Language) Third, drop the testdb database by issuing the DROP DATABASE statement:
testdb; SQL (Structured Query Language) Query OK, 0 rows affected (0.03 sec) MySQL returned zero affected rows indicating that the testdb database has no tables.
DROP DATABASE using MySQL Workbench
First, launch the MySQL workbench and log in to the MySQL Server.


Third, MySQL Workbench displays a dialog to confirm the deletion.
If you choose Review SQL, you’ll see the SQL statement that will be executed. If you choose Drop Now, it’ll delete the database immediately.

To be safe, let’s choose Review SQL:

Fourth, once you are sure that the SQL statement is going to drop the right database, you can click the Execute button to execute the statement.

If you view the schemas pane, you will see that the testdb2 is not on the list anymore.

Summary
- Use the MySQL
DROP DATABASEstatement to delete a database.
Was this tutorial helpful?

Before MS SQL 2019 storing some characters (e.g. ASCII) in MS SQL was limited.
UTF-8 is the dominant character encoding system for the World Wide Web and it is used in over 90% of all web pages. UTF-8 database support allow application(s) internationalization without converting all strings to Unicode.
UTF-8 and UTF-16 both handle the same Unicode characters, and both are variable length encodings that require up to 32 bits per character. However, there are important differences that drive the choice of whether to use UTF-8 or UTF-16 in your multilingual database or column:
- UTF-8 encodes the common ASCII characters including English and numbers using 8-bits. ASCII characters (0-127) use 1 byte, code points 128 to 2047 use 2 bytes, and code points 2048 to 65535 use 3 bytes. The code points 65536 to 1114111 use 4 bytes, and represent the character range for Supplementary Characters.
- But UTF-16 uses at least 16-bits for every character in code points 0 to 65535 (available in UCS-2 and UTF-16 alike), and code points 65536 to 1114111 use the same 4 bytes as UTF-8.

SELECT Name, Description FROM fn_helpcollations() WHERE Name LIKE '%UTF8'; GO

Let’s run the same code on two databases. The first one (named «NONUTF8») will use an old collation (Latin1_General_100_CI_AS_SC). The second database will be using a new UTF8 collation (Latin1_General_100_CI_AS_SC_UTF8). We will try to display the Russian translation for the phrase «SQL2019 supports UTF8 collation», and if Google translate does not lie to us it should sound like «SQL2019 поддерживает сопоставление UTF8».
So, the first one:
USE NONUTF8 GO DECLARE @v VARCHAR(100) = 'SQL2019 поддерживает сопоставление UTF8'; SELECT @v AS String, DATALENGTH(@v) AS DataLengthValue; DECLARE @nv NVARCHAR(100) = N'SQL2019 поддерживает сопоставление UTF8'; SELECT @nv AS String, DATALENGTH(@nv) AS DataLengthValue; GO

Notice that the result for the query where we are using the varchar data type is incorrect. We lose the Cyrillic characters. The characters are displayed correctly in the second query (the one with nvarchar data type).
Now, let’s run the same two queries on the UTF-8 database:
USE UTF8; GO DECLARE @8v VARCHAR(100) = 'SQL2019 поддерживает сопоставление UTF8'; SELECT @8v AS String, DATALENGTH(@8v) AS DataLengthValue; DECLARE @8nv NVARCHAR(100) = N'SQL2019 поддерживает сопоставление UTF8'; SELECT @8nv AS String, DATALENGTH(@8nv) AS DataLengthValue; GO

The result is now correct. We see Cyrillic characters with both data types (varchar and nvarchar).
Look also to the column «DataLengthValue». You can notice that there is a slightly improvement in the consumption of the space needed for storing Cyrillic characters using the UTF-8 encoding.
Another example using a table variable:
DECLARE @Data TABLE ( varchar_nonutf8 VARCHAR(100) COLLATE Latin1_General_100_CI_AS_SC , varchar_utf8 VARCHAR(100) COLLATE Latin1_General_100_CI_AS_SC_UTF8 , nvarchar_nonutf8 NVARCHAR(100) COLLATE Latin1_General_100_CI_AS_SC , nvarchar_utf8 NVARCHAR(100) COLLATE Latin1_General_100_CI_AS_SC_UTF8 ); DECLARE @Value NVARCHAR(MAX) = N'SQL2019 поддерживает сопоставление UTF8' INSERT INTO @Data (varchar_nonutf8, varchar_utf8, nvarchar_nonutf8, nvarchar_utf8) VALUES (@Value, @Value, @Value, @Value) SELECT * FROM @Data

*You can download the complete SQL Script with all examples from the post here: SQL Script.sql (2.23 kb)
Chapter 17 Replication
Replication enables data from one MySQL database server (known as a
source) to be copied to one or more MySQL database servers (known as
replicas). Replication is asynchronous by default; replicas do not
need to be connected permanently to receive updates from a source.
Depending on the configuration, you can replicate all databases,
selected databases, or even selected tables within a database.
Advantages of replication in MySQL include:
Scale-out solutions — spreading the load among multiple replicas
to improve performance. In this environment, all writes and
updates must take place on the source server. Reads, however,
may take place on one or more replicas. This model can improve
the performance of writes (since the source is dedicated to
updates), while dramatically increasing read speed across an
increasing number of replicas.Data security — because the replica can pause the replication
process, it is possible to run backup services on the replica
without corrupting the corresponding source data.Analytics — live data can be created on the source, while the
analysis of the information can take place on the replica
without affecting the performance of the source.Long-distance data distribution — you can use replication to
create a local copy of data for a remote site to use, without
permanent access to the source.
For information on how to use replication in such scenarios, see
Section 17.4, “Replication Solutions”.
There are two core types of replication format, Statement Based
Replication (SBR), which replicates entire SQL statements, and Row
Based Replication (RBR), which replicates only the changed rows. You
can also use a third variety, Mixed Based Replication (MBR). For
more information on the different replication formats, see
Section 17.2.1, “Replication Formats”.
You can use replication to solve a number of different problems,
including performance, supporting the backup of different databases,
and as part of a larger solution to alleviate system failures. For
information on how to address these issues, see
Section 17.4, “Replication Solutions”.
For notes and tips on how different data types and statements are
treated during replication, including details of replication
features, version compatibility, upgrades, and potential problems
and their resolution, see Section 17.5, “Replication Notes and Tips”. For
answers to some questions often asked by those who are new to MySQL
Replication, see Section A.14, “MySQL 8.0 FAQ: Replication”.
For detailed information on the implementation of replication, how
replication works, the process and contents of the binary log,
background threads and the rules used to decide how statements are
recorded and replicated, see
Section 17.2, “Replication Implementation”.
В Microsoft SQL Server есть возможность отсоединять и присоединять базы данных, и сегодня мы с Вами поговорим о том, в каких случаях эта возможность будет нам полезна и, конечно же, рассмотрим примеры реализации данной возможности, причем разными способами.

Итак, давайте начнем с того, для чего же администратору баз данных может потребоваться отсоединить базу данных, а затем снова присоединить.
Первое — это, конечно же, для перемещения базы на другой экземпляр SQL Server, он может располагаться как на этом же компьютере, так и на другом (или просто для перемещения базы данных на другой физический жесткий диск, например, свободное место на диске заканчивается).
Второе — это тогда, когда например сервер вышел из строя, но файлы базы данных и журналов транзакций в порядке и необходимо эти файлы восстановить, т.е. присоединить к новому экземпляру SQL Server на новом сервере.
Вы можете найти и другое применение данной возможности, но перечисленные выше ситуации, особенно первая, самые распространённые.
Заметка! Обзор инструментов для работы с Microsoft SQL Server.
Если отсоединить базу данных, то это означает ее удаление с этого экземпляра SQL Server, но при этом файлы базы данных останутся не поврежденными, которые затем можно использовать для присоединения к тому же или к другому экземпляру SQL Server.
В некоторых случаях отсоединить базу данных будет невозможно, например, тогда когда база данных реплицируется и публикуется, т.е. для отсоединения, база данных должна быть снята с публикации. Также отсоединить базу данных не получиться, если она находится в сеансе зеркального копирования, другими словами, для отключения базы данных необходимо завершить этот сеанс. Системную базу данных отсоединить вообще нельзя. Еще для выполнения отсоединения базы данных требуется монопольный доступ, т.е. в этот момент не должно быть подключенных к ней пользователей.
Отсоединить базу данных можно разными способами, например, на языке T-SQL, т.е. используя процедуру sp_detach_db или также можно воспользоваться графическим инструментом, т.е. SQL Server Management Studio. Мы с Вами разберем оба способа.
Примечание! Все примеры ниже будут рассмотрены на Microsoft SQL Server 2008 R2.
Отсоединение базы данных с помощью sp_detach_db
sp_detach_db – системная хранимая процедура, которая отсоединяет базу данных от экземпляра SQL сервера, а также может выполнить инструкцию UPDATE STATISTICS для всех таблиц перед отключением.
В качестве первого параметра она принимает имя базы данных, в качестве второго TRUE/FALSE (в виде текста), по умолчанию TRUE, т.е. это означает — не выполнять инструкцию UPDATE STATISTICS. Еще есть и третий параметр, который указывает, удалять или не удалять полнотекстовый индексный файл, связанный с отключаемой базой данных, по умолчанию TRUE, т.е. это означает — что метаданные, связанные с полнотекстовыми данными, сохраняются. Но этот параметр в новых версиях будет удален, честно говоря, не проверял на последних версиях, но разработчики SQL сервера не рекомендуют использовать этот параметр, уже начиная с версии 2008 R2.
sp_detach_db @dbname = 'database_name', @skipchecks = 'skipchecks', @keepfulltextindexfile = 'KeepFulltextIndexFile'
Пример. Допустим, у нас есть база данных TestBase, и возникла необходимость ее отсоединить, для этого мы пишем следующую SQL инструкцию:
EXEC sp_detach_db @dbname = 'TestBase'

Отсоединение базы данных с помощью Management Studio
Для того чтобы отсоединить базу данных необходимо в обозревателе объектов раскрыть список «Базы данных» и по нужной базе щелкнуть правой кнопкой мыши и нажать «Задачи ->Отсоединить»

И для того чтобы получить точно такой же результат, как и в примере выше жмем сразу «ОК»


Присоединение баз данных в MS SQL Server
Для того чтобы присоединить базу данных, необходимы соответственно файлы этой базы данных, т.е. mdf, ldf. В случаях если журналы транзакций, т.е. файлы ldf не указаны, то они будут перестроены, но только в том случае если присоединяемая база данных доступна как для чтения, так и для записи. Если база данных была закрыта аварийно, при этом в ней работали пользователи и были открытые транзакции, то файлы журнала транзакций лучше указывать. Присоединять базы данных, полученные из неизвестных источников, не рекомендуется.
Также как и при отсоединении присоединить базу данных можно несколькими способами, мы рассмотри три: это с помощью конструкции CREATE DATABASE, с помощью Management Studio, а также рассмотрим пример присоединения базы данных с использованием процедуры sp_attach_db.
Примечание! В документации указано, что возможность присоединять базы данных с помощью процедуры sp_attach_db в будущих версиях SQL сервера будет удалена, поэтому ее не рекомендуют использовать в новых разработках, в SQL Server 2008 R2 эта возможность ещё есть.
Присоединение базы данных с помощью CREATE DATABASE
Конструкция CREATE DATABASE используется не только для создания новой базы данных, но и для присоединения базы данных, которую ранее отсоединили.
Давайте с помощью конструкции CREATE DATABASE присоединим обратно базу TestBase, которую выше мы отсоединили.
CREATE DATABASE [TestBase] ON (FILENAME = N'C:\TestBase.mdf'), (FILENAME = N'C:\TestBase_log.ldf') FOR ATTACH GO

Как Вы понимаете C:\TestBase.mdf и C:\TestBase_log.ldf — это пути к файлам базы данных.
Присоединение базы данных с помощью Management Studio
В Management Studio присоединение делается следующим образом, в обозревателе объектов щёлкните правой кнопкой мыши по пункту «Базы данных» и нажмите «Присоединить»

Затем через кнопку «Добавить» выбираем файл базы данных (MDF-файл) и жмем «ОК».

Примечание! Если выбрать базу данных, которая уже присоединена, возникнет ошибка.
Присоединение базы данных с помощью процедуры sp_attach_db
sp_attach_db – системная хранимая процедура, которая присоединяет базы данных к экземпляру SQL сервера. Как было уже сказано выше, ее не рекомендуют использовать в новых разработках. Первым параметром передается имя базы данных присоединяемой к серверу, оно должно быть уникальным. Вторым и далее (до 16) передаются пути к файлам базы данных.
sp_attach_db @dbname = 'dbname', @filename1 = 'filename_n', [...16]
EXEC sp_attach_db @dbname = 'TestBase', @filename1 = N'C:\TestBase.mdf', @filename2 = N'C:\TestBase_log.ldf'

Примечание! В случае если Вам необходимо присоединить более 16 файлов, то нужно использовать CREATE DATABASE database_name FOR ATTACH.
Заметка! Если Вас интересует SQL и T-SQL, рекомендую посмотреть мои видеокурсы по T-SQL, с помощью которых Вы «с нуля» научитесь работать с SQL и программировать с использованием языка T-SQL в Microsoft SQL Server.
На этом у меня все, надеюсь, материал был Вам полезен, удачи!
You may notice from my last question that a problem caused some more problems, Reading MySQL manuals in MySQL monitor?
My database is now unusable partly due to my interest to break things and my inability to look at error messages. I know that I should not reuse primary keys, but I would like to use them again after the removal of the database that I deteriorated. So
How can I correctly remove a MySQL database?
asked Jul 4, 2009 at 12:32

From the MySQL prompt:
mysql> drop database <db_name>;answered Jul 4, 2009 at 12:36
-- DELETE ALL RECIPE
drop schema <database_name>;
-- Same as `drop database <database_name>`
drop user <a_user_name>;
-- You may need to add a hostname e.g `drop user bob@localhost`
FLUSH PRIVILEGES;
answered Oct 17, 2012 at 10:11

1 gold badge20 silver badges25 bronze badges
drop database <db_name>;
FLUSH PRIVILEGES;
27 gold badges75 silver badges122 bronze badges
answered Feb 12, 2014 at 4:55
answered Jul 19, 2018 at 16:23

7 silver badges13 bronze badges
For Visual Studio, in the package manager console:
drop-databaseanswered Dec 20, 2020 at 15:52
If you are working in XAMPP and your query of drop database doesn’t work then you can go to the operations tag where you find the column (drop the database(drop)), click that button and your database will be deleted.

answered Oct 26, 2014 at 9:34
Бывает необходимо проектировать базы данных, записи которой содержат специальные символы, не входящие в какой-либо из алфавитов. Поэтому возникает надобность в использовании кодировки Юникод (UTF). О том как подружить MSSQL и UTF будет рассказано в данной статье.
Допустим требуется спроектировать базу данных (БД) для MSSQL содержащую англо-русский словарь. Соответственно поля этой таблицы будут следующими:
- Английское слово
- Транскрипция
- Перевод
Международный фонетический алфавит (International Phonetic Alphabet — IPA) из которого составляется транскрипция содержит специальные символы которые не в ходят ни английский алфавит, ни в русский (само собой), ни в какой-либо другой, например: ə, ð, æ, ʃ, ʌ и так далее.
В Microsoft SQL Server (MSSQL) присутствуют только национальные кодировки, то есть таблицы символов для конкретного языка. Если выполнить запрос:
То можно увидеть список всех доступных кодировок. Список огромный (у меня 3885 строк).

Все эти кодировки применимы в MSSQL к полям с однобайтовыми типами данных: char, varchar и text.
Чтобы установить нужную кодировку (например Latin1_General_CI_AI), необходимо воспользоваться оператором COLLATE:
В списке кодировок MSSQL отсутствует UTF (Юникод). Так как же настроить ее использование?
В MSSQL реализованы двухбайтовые типы данных: nchar, nvarchar и ntext. Как раз они и поддерживают использование всех символов кодировки UTF.
Использование типов данных nchar, nvarchar и ntext имеет серьезную особенность. Чтобы данные, заносимые в БД, корректно обрабатывались, нужно перед вставляемым значением дописать букву N — это сигнал для SQL сервера, что вводимые данные это Юникод.
Рассмотрим пример. Создадим таблицу, где поле transcription имеет тип nvarchar:
Добавление записи в таблицу будет происходить так:
Видим, что данные корректно отображаются:

Спасибо за прочтение статьи о MSSQL и UTF!
DROP DATABASE — remove a database
Synopsis
DROP DATABASE [ IF EXISTS ]name[ [ WITH ] (option[, ...] ) ]whereoptioncan be: FORCE
Description
DROP DATABASE drops a database. It removes the catalog entries for the database and deletes the directory containing the data. It can only be executed by the database owner. It cannot be executed while you are connected to the target database. (Connect to postgres or any other database to issue this command.) Also, if anyone else is connected to the target database, this command will fail unless you use the FORCE option described below.
DROP DATABASE cannot be undone. Use it with care!
Parameters
Do not throw an error if the database does not exist. A notice is issued in this case.
The name of the database to remove.
Attempt to terminate all existing connections to the target database. It doesn’t terminate if prepared transactions, active logical replication slots or subscriptions are present in the target database.
Notes
This command cannot be executed while connected to the target database. Thus, it might be more convenient to use the program instead, which is a wrapper around this command.
Compatibility
There is no DROP DATABASE statement in the SQL standard.
14.
Armando
Сейчас в теме
(1) alex_gus, если речь про 1С, то:
Глобальный контекст.УдалитьДанныеИнформационнойБазы (Global context.EraseInfoBaseData)
Глобальный контекст (Global context)
УдалитьДанныеИнформационнойБазы (EraseInfoBaseData)
Синтаксис:
Выполняет удаление данных информационной базы:
Из таблиц, определяемых структурой метаданных;
Из хранилищ настроек;
Из истории;
Административных параметров информационной базы;
Из списка пользователей.
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:
Если вызван из разделенного сеанса, то данные удаляются только для области данных, определяемой заданными значениями разделителей.
Для того, чтобы не записывать данные удаленной области (например, сохранение настроек отображения форм), сразу после вызова метода рекомендуется изменить значения параметров сеанса, определяющих разделение данных.
Удаление данных доступно пользователю с правом «Администрирование».
Удаление возможно, если установлен режим монопольного доступа к базе данных или области (вызван метод УстановитьМонопольныйРежим), иначе будет выдано исключение.
———————————————————————————
Всем привет друзья. В сегодняшней статье я хочу рассказать вам, как очистить базу данных MySql от ненужного мусора и существенно ускорить работу всего блога. Не так давно, я переносил свой блог на другой (о его преимуществах написал в этой статье) и при переносе базы данных заметил, что ее размер составляет почти 57 Mb. Мягко говоря, я был удивлен, ведь перенос разных сайтов осуществлялся не один раз до этого, и тогда размеры баз составляли от 1 до 20 Mb, а сами сайты были намного больше этого блога. Откуда у блога с количеством статей меньше 200 может взяться такой огромный размер базы данных? Естественно я начал разбираться в этом деле и хочу поделиться с вами результатами своей работы.
Но перед этим давайте рассмотрим основные элементы, которые так сильно увеличивают размер нашей базы данных, и по порядку будем выполнять действия для уменьшения ее размера.
[ads-pc-1]
[ads-mob-1]
— Рост статей на блоге (здесь мы ничего оптимизировать не будем, это вполне нормальное явление у каждого развивающегося блога).
— Увеличение количества ревизий (резервные копии написанной статьи). Когда мы пишем статьи на свой блог, движок WordPress автоматически через определенные периоды времени создает резервные копии этой самой статьи. К примеру, последняя написанная мною статья на блог, получила 4 ревизии.

И это притом, что написана она была в текстовом редакторе Word и только после этого вставлена на блог, где я уже проводил небольшие поправки. Теперь представьте ситуацию, если бы я писал статью непосредственно с админки блога. Тогда бы количество ревизий исчислялось бы десятками, а каждая из них это дополнительный размер вашей базы данных.
Чтобы такого больше не повторялось, мы запретим нашему движку создавать резервные копии записей. Для этого откройте файл wp-config.php (он находится в корне вашего сайта) и после строки
вставьте следующую строку
которая полностью запрещает создавать резервные копии записей. В результате у вас должна получится вот такая комбинация:

Если же вы хотите чтобы ревизии постов создавались, но в строго ограниченном количестве, тогда после строки
где цифра 2 означает количество создаваемых ревизий (можете менять ее на любую цифру).
Перед выполнением нижеописанных действий обязательно сделайте резервную копию базы данных. В случаи если что-то пойдет не так, вы сможете восстановить работоспособность блога в считанные минуты.

и подтверждаете свои действия нажатием кнопки «ОК».

Не переживайте, этот запрос удалит только резервные копии, все ваши записи останутся целыми и невредимыми.
Взгляните на мою статистику комментариев:

Больше 23000 комментариев находятся в корзине, и каждый из них занимает свое место в базе данных. Также есть 28 спамных комментариев.
Для удаления всех комментариев из корзины, выполняем такой SQL-запрос:
DELETE FROM wp_comments WHERE comment_approved = "trash"
У многих блоггеров установлен плагин Akismet который довольно хорошо ведет борьбу с назойливыми спамерами, но в свою очередь тоже нагружает базу данных. Для того, чтобы очистить таблицу wp_commentmeta (именно в эту таблицу и записывает свои данные плагин Akismet) совершим такой SQL-запрос:
DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments)
А теперь друзья, давайте все это дело свяжем воедино и целью которого, является выполнение части задач, которые я описал выше, и не только их:
— ревизия постов
— удаление спам-комментариев
— удаление неодобренных комментариев
— удаление неиспользуемых тегов
— удаление неиспользуемых META-данных
— оптимизация неиспользуемой части БД
Итак, устанавливаем плагин и в консоле блоге переходим по адресу Настройки- WP-Cleanup, отмечаем чекерами все поля и жмем кнопку «Cleanup the selected items!»

Всего через пару секунд вы увидите примерно такое сообщение с уведомлением о выполненной работе по оптимизации:

А теперь давайте сравним результаты до оптимизации базы данных и после.
До начала работ размер базы данных составлял почти 57 Mb, после выполнения всех операций описанных выше размер базы составил 8,7 Mb. Представьте себе, почти в 7 раз размер базы данных стал меньше.

Вот так вот друзья. Кстати после проведенной оптимизации, блог стал намного быстрее загружаться, чему я, несомненно, рад.
После того, как вы оптимизировали свою базу данных, плагин можно отключить, до следующей оптимизации, примерно через 2-3 месяца.
Ну, а я буду заканчивать этот пост. Обязательно проводите чистку ваших баз, и если что-то непонятно переспросите у меня перед выполнением работ.
Все, всем пока и до новых встреч.
[ads-pc-2]
[ads-mob-2]
(2 голоса, в среднем: 5 из 5)
Добрый день, уважаемые читатели. Сегодня я хочу поделится с вами полезным скриптом, который я использую каждый день.
Данный скрипт позволяет полностью очищать mssql базу данных от таблиц, хранимых процедур, вьюх и внешних ключей. В общем, после работы скрипта база данных выглядит так, как будто её только что создали.
Имя автора скрипта я, к сожалению, не знаю. Нашёл скрипт на http://stackoverflow.com/. Человек, который опубликовал скрипт, имеет неактивный аккаунт с ником Ivan.
/* Drop all non-system stored procs */ DECLARE @name VARCHAR(128) DECLARE @SQL VARCHAR(254) SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 ORDER BY [name]) WHILE @name is not null BEGIN SELECT @SQL = 'DROP PROCEDURE [dbo].[' + RTRIM(@name) +']' EXEC (@SQL) PRINT 'Dropped Procedure: ' + @name SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 AND [name] > @name ORDER BY [name]) END GO /* Drop all views */ DECLARE @name VARCHAR(128) DECLARE @SQL VARCHAR(254) SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 ORDER BY [name]) WHILE @name IS NOT NULL BEGIN SELECT @SQL = 'DROP VIEW [dbo].[' + RTRIM(@name) +']' EXEC (@SQL) PRINT 'Dropped View: ' + @name SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 AND [name] > @name ORDER BY [name]) END GO /* Drop all functions */ DECLARE @name VARCHAR(128) DECLARE @SQL VARCHAR(254) SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] IN (N'FN', N'IF', N'TF', N'FS', N'FT') AND category = 0 ORDER BY [name]) WHILE @name IS NOT NULL BEGIN SELECT @SQL = 'DROP FUNCTION [dbo].[' + RTRIM(@name) +']' EXEC (@SQL) PRINT 'Dropped Function: ' + @name SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] IN (N'FN', N'IF', N'TF', N'FS', N'FT') AND category = 0 AND [name] > @name ORDER BY [name]) END GO /* Drop all Foreign Key constraints */ DECLARE @name VARCHAR(128) DECLARE @constraint VARCHAR(254) DECLARE @SQL VARCHAR(254) SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME) WHILE @name is not null BEGIN SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME) WHILE @constraint IS NOT NULL BEGIN SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint) +']' EXEC (@SQL) PRINT 'Dropped FK Constraint: ' + @constraint + ' on ' + @name SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME) END SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME) END GO /* Drop all Primary Key constraints */ DECLARE @name VARCHAR(128) DECLARE @constraint VARCHAR(254) DECLARE @SQL VARCHAR(254) SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME) WHILE @name IS NOT NULL BEGIN SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME) WHILE @constraint is not null BEGIN SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint)+']' EXEC (@SQL) PRINT 'Dropped PK Constraint: ' + @constraint + ' on ' + @name SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME) END SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME) END GO /* Drop all tables */ DECLARE @name VARCHAR(128) DECLARE @SQL VARCHAR(254) SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 ORDER BY [name]) WHILE @name IS NOT NULL BEGIN SELECT @SQL = 'DROP TABLE [dbo].[' + RTRIM(@name) +']' EXEC (@SQL) PRINT 'Dropped Table: ' + @name SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 AND [name] > @name ORDER BY [name]) END GO
Команда DELETE
Если вам необходимо удалить одну, несколько или все записи в таблице базы данных, то с этим вам поможет команда DELETE.
Синтаксис запроса на удаление записи.
Будьте предельно внимательны при выполнении запросов на удаление записей! Если вы не укажите команду WHERE и последующее условие, то будут удалены все записи в таблице.
Удаление нескольких записей таблицы
Для примера удалим несколько записей из таблицы books, которая хранится в базе данных Bookstore.
Оповестим сервер MySQL о базе данных, для которой будут выполнятся запросы.
Далее выведем записи таблицы books с идентификаторами с 1 по 5.
Допустим необходимо удалить все записи с книгами за авторством Н.В.Гоголя. Запрос на удаление и его результат будет выглядеть следующим образом.
mysql> books author=;
Query OK, 2 rows affected (0.00 sec)
Удаление всех записей таблицы
Если вам нужно очистить всю таблицу от имеющихся в ней данных, то просто выполните команду DELETE без каких либо условий.
Следующая команда удалит все записи в таблице books.
Для удаления нескольких несвязанных записей, удобнее воспользоваться HTML-формой, где в конце каждой строки будет стоять поле для флага (checkbox), при установке которого, строка будет считаться выделенной для удаления.
Создадим файл index.php, в котором выведем первые 5 записей таблицы books и разместим в них код формы с полем для флага.
Откроем в браузере страницу index.php и увидим следующую таблицу с записями.

Для того чтобы наша форма сработала, необходимо также создать файл delete.php, в котором будем обрабатывать полученные от формы идентификаторы записей, а также составим и выполним запрос на удаление выбранных записей.
Теперь после того как мы выбрали две записи на удаление, а файл delete.php успешно получил данные и выполнил составленный запрос, мы увидим таблицу, в которой записи с идентификаторами 4 и 5 будут отсутствовать, а на их место сдвинутся записи идущие далее.

Заключение
В данной статье мы рассмотрели правила и возможности использования команды DELETE для удаления записей из таблицы базы данных, используя терминал. Также увидели, то как быстро можно удалить сразу несколько записей из таблицы с помощью PHP (PDO).
Объем данных в бизнесе, науке и разработке растет с каждой секундой. Практически все рабочие процессы связаны с использованием баз данных. Размеры БД в крупных компаниях не позволяют хранить их на физических дисках — слишком дорого и ненадежно. Безопаснее и удобнее использовать облачные хранилища и SQL-серверы.
Чтобы правильно организовать удаленный доступ, фиксировать изменения в данных и сохранять бэкапы, понадобится репликация. Что такое репликация базы данных, как ее настроить и что стоит учесть — рассказывают специалисты Boodet.Online.
Что такое репликация базы данных?
базы данных SQL Server — это особая технология копирования и распределения как самих данных, так объектов БД из одной базы в другую. Чтобы компоненты оставались целостными, нужна синхронизация. Репликацию можно сделать непрерывной или настроить на запуск через определенные промежутки времени.
А теперь то же самое, но простыми словами. Представьте, что у вас вместо одной БД две. Первая — главная. Именно там происходят все ключевые изменения. Чтобы не потерять важную информацию и настройки, при каждом изменении, состояние и наполнение таблиц копируется во вторую БД. Если одна из них по каким-то причинам «испортится», данные можно будет быстро восстановить. Другими словами, — это точный клон «главной» MS
Чем это отличается от обычного резервного копирования? Бэкапы — это просто информация. Например, резервная копия сервера — это данные о том, что на этом сервере было и как работало. Чтобы отладить процессы с помощью бэкапов, надо запустить восстановление. — это полностью готовый к работе клон главной . Если что-то идет не так, вы просто продолжаете работать, без каких-либо дополнительных действий. Когда главную БД починят, обновления тут же перенесутся с реплики. Чаще всего пользователи даже не замечают, что что-то произошло — процессы синхронизированы.
Компоненты репликации
Компоненты — это то, что можно настроить. Основными являются объекты, состояния, и стороны процесса. Проще говоря, это все, что отвечает за процесс синхронизации:
как это происходит;
в каком состоянии это происходит;
кто отвечает за изменения.
Ниже мы кратко рассмотрим все базовые компоненты.
Репликация SQL Server использует заранее определенный набор автономных программ и событий, известных как агенты. По умолчанию, агенты запускаются как запланированные задания под управлением агента SQL Server.
Какими они бывают:
снапшотов — моментальных снимков;
В издателе находится список объектов, обозначенных как «статьи». У него может быть одна или несколько публикаций. Именно издатель определяет механизм распространения данных, создавая несколько хранимых процедур внутренней репликации баз данных. Этот компонент также отвечает за доступность информации.
Публикация — это логический набор статей из базы данных. С помощью ее сущности можно определять и настраивать свойства статьи на более высоком уровне, чтобы свойства наследовались для всех статей в этой группе.
Статья — это базовая единица клонирования. Компонент может состоять из:
На основе одного объекта можно создать одну или более статей. Что можно делать со статьями во время настройки процесса:
перемещаться по статье (с помощью Мастера создания публикаций);
устанавливать свойства и доступы к нему;
выводить список всех опубликованных статей;
получать подробную информацию;
запрашивать сведения об уровне столбца;
перечислять столбцы, опубликованные в
, которая работает как хранилище для данных , связанных с одним или несколькими издателями. Чаще всего он одновременно играет роль издателя и распространителя. В зависимости от места расположения бывает локальным или удаленным.
Базы данных дистрибьютора
У каждого дистрибьютора при должна быть хотя бы одна собственная
, который использует сведения репликации SQL Server из публикации, называется подписчиком. Он может получать информацию от одного или нескольких издателей и публикаций, передавать обратно изменения или повторно публиковать (все зависит от модели
Подписка — это запрос на доставку копии публикации подписчику. Она определяет, какие данные будут получены, где и когда.
Существует два типа подписок:
Push — БД обновляются напрямую;
Pull — БД обновляются по запросу.
Типы репликации
В зависимости от направления репликация MS SQL Server бывает:
Выделяют 4 типа репликации базы данных:
Моментальным снимком
Точное копирование данных в том виде, в котором они отображаются в момент создания снапшота БД.
если данные меняются не часто;
значение реплики невелико;
большое количество изменений происходит за малый промежуток времени.
Пример: ежедневное обновление цен на товары интернет-магазина, которые надо синхронизировать с главного сервера в полночь.
Транзакций
Синхронизация в режиме реального времени. Реплицируется не только конечное состояние БД, но и все выполненные транзакции (чтобы потом можно было отследить историю изменений).
если реплика будет применяться при отказе основной БД;
головному офису нужны отчеты об операциях в филиалах;
частое изменение в SQL.
Одноранговая
Одновременная синхронизация для нескольких подписчиков.
у компании много SQL-серверов в разных географических точках;
нужно, чтобы изменения можно было вносить на любом из серверов;
необходимо эффективно масштабировать рабочее приложение с доступом к SQL.
Пример: крупная торговая сеть использует одну CRM, где каждый сотрудник может внести свои изменения.
Клонирование слиянием
Чаще всего используется в среде сервер-клиент, чтобы добиться синхронизации в тех случаях, когда отсутствует непрерывное подключение SQL Server.
если серверы не всегда включены;
когда несколько вторичных хранилищ работают с одним общим.
Пример: магазин в Магадане заказывает со склада в Москве упаковку товара. Даже если сервер магазина в Москве выключен ночью, с утра сотрудники увидят обновленные данные об остатках на складе.
Репликация Active Directory
Репликация Active Directory гарантирует, что информация или данные между контроллерами домена остаются обновленными и согласованными.
Какие разделы клонируются в Active Directory:
Настройка репликации
Мы рекомендуем обратиться к специалистам для настройки . Без IT-знаний и опыта это будет сложно сделать самостоятельно. В этой статье мы рассмотрим базовые принципы процесса и важные условия для клонирования.
О чем нельзя забывать
Прежде чем запустить , надо убедиться, что выполнены все важные условия:
для учетной записи назначена фиксированная роль db_owner;
есть разрешения на чтение и запись;
хотя бы в одной БД есть первичный ключ и статья;
на диске хватит места для хранения клонированного экземпляра.
IT-специалисты используют специальный софт для того, чтобы упростить процесс настройки : SQL Server Management Studio.
Первым делом настраивают дистрибьютора, создают публикацию, папку для снапшотов и подписки. Все это можно сделать в графическом интерфейсе SQL Server Management Studio или из командной строки. Здесь же выбирают тип и настраивают компоненты. Чтобы выбрать их и настроить правильно, нужно четко понимать, какие процессы выполняет SQL Server, сколько у него дублеров и пользователей. Основное, что должен учитывать специалист — потребности пользователя, например, бизнеса.
Заключение
Репликация MS SQL Server — это полезная функция, которая позволяет создать точный клон базы данных. Его можно использовать для быстрого восстановления, создания распределенных БД, синхронизации при отсутствии постоянного подключения. Тип и способ настройки репликации зависит от потребностей пользователя.
Мы не рекомендуем настраивать клонирование самостоятельно — так можно потерять вообще все данные. Специалисты Boodet.Online помогут подобрать нужный тип синхронизации, подключат удаленный

