Как закрыть соединение с базой sql
Перейти к содержимому

Как закрыть соединение с базой sql

  • автор:

Отсоединение базы данных

В этой статье описывается, как отсоединить базу данных в SQL Server с помощью SQL Server Management Studio или Transact-SQL. Отсоединяемые файлы не удаляются и остаются в файловой системе. Их можно присоединить повторно с помощью параметра CREATE DATABASE . FOR ATTACH или FOR ATTACH_REBUILD_LOG . Также файлы можно переместить на другой сервер и присоединить к экземпляру той же версии или более новой.

Ограничения

Разрешения

Требуется членство в предопределенной роли базы данных db_owner.

Использование SQL Server Management Studio

Перед перемещением базы данных

Если вы перемещаете базу данных, прежде чем отсоединять ее от существующего экземпляра SQL Server, используйте страницу свойств базы данных для просмотра файлов, связанных с базой данных и их текущими расположениями.

  1. В обозреватель объектов SQL Server Management Studio подключитесь к экземпляру ядро СУБД SQL Server, а затем разверните экземпляр.
  2. Раскройте список Базы данныхи выберите имя пользовательской базы данных, которую необходимо отсоединить.
  3. Щелкните правой кнопкой мыши имя базы данных и выберите Свойства. Выберите страницу Файлы и просмотрите записи в таблице Файлы базы данных.

Убедитесь, что перед отсоединением, перемещением и присоединением базы данных вы проверили все связанные с ней файлы. Затем перейдите к этапам отсоединения, описанным в следующем разделе. Дополнительные сведения о присоединении базы данных в ее новом расположении см. в статье Присоединение базы данных.

Отсоединение базы данных

  1. В обозреватель объектов SQL Server Management Studio подключитесь к экземпляру ядро СУБД SQL Server, а затем разверните экземпляр.
  2. Раскройте список Базы данныхи выберите имя пользовательской базы данных, которую необходимо отсоединить.
  3. Щелкните правой кнопкой мыши имя базы данных, наведите курсор на пункт Задачи и выберите Отсоединить. Появится диалоговое окно Отсоединение базы данных .
  4. Базы данных для отсоединения: перечисляет базы данных для отсоединения.
  5. Имя базы данных: отображает имя отсоединяемой базы данных.
  6. Удалите Подключение ions: отключите подключения к указанной базе данных.

Примечание. Невозможно отключить базу данных с активными подключениями.

  • Если база данных участвует в репликации, то ее Состояние имеет значение Не готово , а в столбце Сообщение отображается строка База данных реплицирована.
  • Если база данных имеет одно или несколько активных подключений, состояние не готово, а столбец сообщения отображает >активные подключения. Например: Активных подключений: 1. Перед отсоединением базы данных необходимо отключить все активные подключения, выбрав команду Удалить подключения.

Чтобы получить сведения о сообщении, откройте монитор активности, щелкнув текст с гиперссылкой.

Отсоединенная база данных отображается в узле Базы данных обозревателя объектов до тех пор, пока не будет обновлено представление. Вы можете обновить представление в любое время: выберите в области обозреватель объектов и в строке меню выберите «Вид» и «Обновить«.

Использование Transact-SQL

Перед перемещением базы данных

Если вы перемещаете базу данных, прежде чем отсоединять ее от существующего экземпляра SQL Server, используйте sys.database_files представление системного каталога для просмотра файлов, связанных с базой данных и их текущими расположениями. Для получения дополнительной информации см. sys.database_files (Transact-SQL).

  1. В СРЕДЕ SQL Server Management Studio выберите новый запрос, чтобы открыть Редактор запросов.
  2. Скопируйте следующий скрипт Transact-SQL в Редактор запросов и нажмите кнопку «Выполнить«. Этот скрипт показывает расположение физических файлов базы данных. Убедитесь, что при перемещении базы данных путем отсоединения и присоединения вы проверили все файлы.

USE [database_name] GO SELECT type_desc, name, physical_name FROM sys.database_files; 

Убедитесь, что перед отсоединением, перемещением и присоединением базы данных вы проверили все связанные с ней файлы. Затем перейдите к этапам отсоединения, описанным в следующем разделе. Дополнительные сведения о присоединении базы данных в ее новом расположении см. в статье Присоединение базы данных.

Отсоединение базы данных

  1. Соединитесь с ядром СУБД .
  2. На стандартной панели выберите пункт Создать запрос.
  3. Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере база данных отсоединяется AdventureWorks2022 с заданным параметром skipchecks true . Дополнительные сведения см. в статье об использовании sp_detach_db.
EXEC sp_detach_db 'AdventureWorks2022', 'true'; 

Связанный контент

  • Отсоединение базы данных и подключение (SQL Server)
  • sp_detach_db (Transact-SQL)
  • Присоединение базы данных

Как полностью закрыть sql соединение и очистить данные?

Делаю запрос к базе. При следующем запросе у меня меняется offset . Откуда то берутся данные, которых в этом запросе и в помине нет. Они были в предыдущем запросе. Поэтому думаю что не до конца или закрыл соединение, или очистил данные

 public string returnData(int offset, string razdel) < Listlist = new List(); using (dbcon = new MySqlConnection(connectionString)) < dbcon.Open(); using (IDbCommand cmd = dbcon.CreateCommand()) < string sql = string.Format("SELECT n.id, n.title, n.full_image, n.date, n.preview_text, n.url FROM news n JOIN news_type on n.id_news=news_type.id WHERE news_type.name LIKE '%%' ORDER BY n.date desc Limit offset ", razdel,10, offset*10); cmd.CommandText = sql; using (IDataReader reader = cmd.ExecuteReader()) < while (reader.Read()) < RecyclerViewNews news = new RecyclerViewNews(); news.Id = (int) reader["id"]; news.Title = (string)reader["title"]; news.FullImage = (string)reader["full_image"]; news.PreviewText = (string)reader["preview_text"]; news.Date = (string)reader["date"]; news.Url = (string) reader["url"]; list.Add(news); >> > dbcon.Close(); > var m = JsonConvert.SerializeObject(list); return m; > 

Отслеживать

Radzhab 654654

задан 8 июл 2015 в 14:07

Radzhab 654654 Radzhab 654654

379 1 1 золотой знак 4 4 серебряных знака 19 19 бронзовых знаков

а где сам offset обявлен? это статическое поле?

– user177221

8 июл 2015 в 14:10

пардон. Забыл вставить. offset всегда равен 10

8 июл 2015 в 14:17

ну раз offset всегда равен 10 — то ваш запрос всегда выдает строки с 11 по 20. В чем суть вопроса?

– user177221

8 июл 2015 в 14:18

тьфу ты)) он у меня равен offset = offset * 10.

8 июл 2015 в 14:21

т.е в первом запросе будет limit 10 offset 0. Во втором limit 10 offset 10; В третьем limit 10 offset 20;

Как принудительно закрыть соединения с MS SQL для восстановления

Для освобождения базы данных SQL Server от всех текущих пользователей применяется следующая команда:

Скопировать код

ALTER DATABASE НазваниеВашейБазы SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

Эта команда завершает все текущие сессии, откатывает транзакции и подготавливает базу данных к техническому обслуживанию. После выполнения работ для снятия ограничения доступа применяется команда:

Скопировать код

ALTER DATABASE НазваниеВашейБазы SET MULTI_USER;

Такие действия обеспечивают безопасность при работе по восстановлению базы данных.

Работа со соединениями по отдельности

Завершение одной сессии

Чтобы прекратить работу одной сессии, не затрагивая остальные, используйте команду KILL :

Скопировать код

-- Находим сессию, которую нужно 'убить'. SELECT session_id FROM sys.dm_exec_sessions WHERE database_id = DB_ID('НазваниеВашейБазы'); -- Процесс завершения сессии. KILL ;

Полное устранение сессий с использованием курсора

Можно написать скрипт с курсором для автоматического завершения всех активных сессий:

Скопировать код

DECLARE @session_id INT; DECLARE session_cursor CURSOR FOR SELECT session_id FROM sys.dm_exec_sessions WHERE database_id = DB_ID('НазваниеВашейБазы'); OPEN session_cursor; FETCH NEXT FROM session_cursor INTO @session_id; WHILE @@FETCH_STATUS = 0 BEGIN EXEC('KILL ' + @session_id); FETCH NEXT FROM session_cursor INTO @session_id; END; CLOSE session_cursor; DEALLOCATE session_cursor;

Детализированная информация о соединениях

Получить сведения о текущих соединениях с базой вы можете, обратившись к таблицам sys.sysprocesses , sys.sysdatabases и sys.sysusers .

Графический интерфейс в SQL Server Management Studio

Если вы предпочитаете графическую работу с базой, то SQL Server Management Studio предоставляет функцию «close existing connections» при восстановлении базы данных.

Визуализация

Представьте, что база данных – это вечеринка в вашем доме:

Закрытие активных соединений в базе

Author24 — интернет-сервис помощи студентам

Привет! перевел парочку баз в режим Single User, но там повисли какие-то неизвестные подключения и я после этого не имею доступа к настройкам базы, выдается ошибка о том, что база уже занята активным соединением. Вопрос такой, как через Management Studio закрыть все соединения с базой? Пожалуйста только поподробнее, так как я в языке SQL вообще ничего не понимаю.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Список активных соединений
Здравствуйте. Столкнулся с проблемой, как получить список активных соединений (localAdr Port .

Закрытие соединений с БД
У меня не получается: Когда через ASP выполнено соединение с БД Oracle 8.1.7 (работа с данными -.

QTcpSocket закрытие соединений
Здравствуйте форумчане. При каких случаях необходимо вызывать эти методы: disconnectFromHost().

Закрытие портов и установка максимального разрешенного количества соединений (Debian)
Доброго дня! Возникла необходимость закрыть все порты кроме определенного списка, и установить.

Регистрация: 27.06.2013
Сообщений: 46

declare @dbname sysname
set @dbname = ‘указываем имя базы’

—ищем номер сессии
select spid from sysprocesses
where dbid = db_id(@dbname)
and spid > 50

—далее выполянем команду kill
kill —здесь указываем номер сессии(например kill 62)

3500 / 2084 / 742
Регистрация: 02.06.2013
Сообщений: 5,083

ЦитатаСообщение от Dimasio Посмотреть сообщение

перевел парочку баз в режим Single User, но там повисли какие-то неизвестные подключения и я после этого не имею доступа к настройкам базы

Это системные процессы. А для изменения настроек БД совсем не обязательно переводить ее в single user.
Захватить БД для каких-то монопольных действий с ней можно так:

1 2 3
use master; alter database БД set single_user with rollback immediate; use БД;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *