数据库同步工具
sqlserver,Mysql数据同步软件

如何使SQL Server数据库脱机

购买事宜请联系QQ:1793040

问题

您需要使SQL Server用户数据库脱机。

这些是您可能需要执行此操作的几个原因,以下仅是其中几个:

  • 您有99%的把握确定不再使用数据库,但是您想对它进行“尖叫测试”一段时间,以确保在删除数据库之前
  • 您已将数据库移至另一台服务器,并认为您具有与该数据库的所有连接都已重新指向新服务器,但想保证用户无法访问旧服务器

与大多数问题一样,有多种解决方法。此处列出了三种方法,可帮助您决定使用哪种方法:

  • SQL Server管理Studio(SSMS)
    • 免费下载
    • 基于GUI
    • 如果您只需要使一个数据库脱机,可能是最简单,最快的方法
    • 不需要您非常熟悉使用T-SQL或PowerShell
    • 使您可以轻松地查看数据库中是否存在连接,然后再尝试使其脱机
    • 您只需要选中一个框即可将连接强制出数据库
  • T-SQL
    • 在Management Studio的查询窗口中运行
    • 仍然非常容易和快速
    • 只需很少的T-SQL知识
    • 如果您正在编写T-SQL脚本以使一个或多个数据库脱机,则使用
    • 使用额外的T-SQL仍然很容易将连接强制出数据库
  • dbatools
    • 免费的PowerShell模块
    • 仍然轻松快捷
    • 只需对PowerShell和dbatools有所了解
    • 非常容易编写脚本,使一个或多个数据库脱机
    • 仍然很容易通过开关将连接强制出数据库

我们将逐步介绍这三种方法,因此您可以决定哪种方法最适合您的目的。

本技巧中使用了以下版本:

  • SQL Server 2017 CU19开发人员版
  • SQL Server管理Studio 18.4
  • PowerShell 5.1.17763.1007
  • dbatools 1.0.52

注意: 备份要脱机的任何数据库,并 在继续之前测试将其还原到其他位置。你只是永远不知道。

使用SQL Server Management Studio(SSMS)使SQL Server数据库脱机

启动SQL Server Management Studio

  1. 左键单击开始
  2. 所有应用
  3. Microsoft SQL Server工具
  4. Microsoft SQL Server管理工作室

从快捷方式启动SQL Server Management Studio(SSMS)

或者,由于将SQL Server工具路径附加到用户的%PATH%变量中,因此:

  1. 右键单击开始

跑

  1. 在“打开”中输入ssms

从可执行文件启动SQL Server Management Studio(SSMS)

对象资源管理器可能会自动打开,但是如果不执行以下操作:

  1. 视图
  2. 对象资源管理器(或仅F8)

显示对象资源管理器

现在,我们将连接到数据库引擎。

  1. 连接
  2. 数据库引擎…

连接

  1. 服务器名称:(在我们的示例中,我正在连接到本地计算机上的命名实例调用SQL2017,因此SQL Server的全名是。\ SQL2017)
  2. 身份验证(假设您正在使用Active Directory身份验证)
  3. 连接

连接到数据库引擎

我们将要脱机的数据库的名称称为MyDatabase。

  1. 展开服务器下拉菜单
  2. 展开数据库下拉菜单
  3. 右键单击数据库名称-MyDatabase
  4. 任务
  5. 离线

脱机启动数据库

如果状态为“就绪”,则数据库中没有连接。

  1. 检查状态

数据库脱机屏幕

但是,如果状态为“未就绪”,如下所示。

  1. 点击“消息”链接

显示数据库中是否有活动连接

正如我们在示例中看到的那样,它告诉我们数据库中有一个要脱机的连接。该消息框告诉我们关闭连接或选择“删除所有活动连接”框。我们可以通过以下两种方式之一来解决这一问题。

选项1

  1. 点击“新查询”

新查询

  1. 在查询窗口中运行EXEC sp_who2
  2. F5(或单击执行按钮)
  3. 在DBName列下查找对我们要脱机访问的数据库的任何引用,并记下SPID列下的相应编号

在数据库中查找连接

接下来,对数据库中的任何spid运行kill。在这里,我们只有一个spid = 57。

  1. 为每个spd输入“ kill x”并突出显示
  2. F5(或单击执行)

终止连接

  1. 突出显示“ EXEC sp_who2”
  2. F5(或单击执行)
  3. 验证进程已被杀死

确认没有更多连接

返回到对象资源管理器。

  1. 右键单击数据库名称MyDatabase
  2. 任务
  3. 离线

在“使数据库脱机”窗口中,执行以下操作:

  1. 检查状态

使数据库脱机

这里要注意一件事。我们本来可以选中“删除所有活动连接”以强制断开连接。但是SQL Server阻止我们出于某种原因使数据库脱机,这是为了保护我们自己。首先查看数据库中的连接更为安全。如果您不小心尝试使活动的生产数据库脱机,那么您可能可以在犯错之前发现错误。

在对象资源管理器中查找,以确保数据库显示(脱机)。

脱机验证数据库

如果不是,请执行以下操作:

  1. 右键单击“数据库”
  2. 刷新

刷新数据库列表

使用T-SQL使SQL Server数据库脱机

我们仍将使用SSMS,但仅使用查询窗口。

  1. 右键单击服务器
  2. 新查询

新查询

  1. 查询窗口中的EXEC sp_who2
  2. F5(或单击执行)
  3. 在DBName列下查找对我们要脱机访问的数据库的任何引用,并记下SPID列下的相应编号

在数据库中查找连接

接下来,对数据库中的任何对象运行带有spid的kill命令。在这里,我们只有一个spid = 55。

  1. 为每个spd输入“ kill x”并突出显示
  2. F5(或执行)

终止连接

  1. 突出显示“ EXEC sp_who2”
  2. F5(或单击执行)
  3. 验证进程已被杀死

确认没有更多连接

使用以下T-SQL使数据库脱机:

USE [主人]
走
ALTER  DATABASE [MyDatabase] 设置 离线
GO			

  1. 突出陈述
  2. F5(或单击执行)

使数据库脱机

我们没有收到任何错误,但是这是一种验证数据库是否脱机的方法:

选择 *  从 sys 。数据库			

  1. 突出陈述
  2. F5(或单击执行)
  3. 查找数据库名称
  4. 检查state_desc列的状态

脱机验证数据库

使用dbatools使SQL Server数据库脱机

我们已经了解了如何使用SQL Server Management Studio和T-SQL使数据库脱机,现在我们将了解如何使用 在此处下载的dbatools来实现 此目的。

开始:

  1. 右键单击开始

跑

  1. 电源外壳

启动PowerShell可执行文件

我们将运行Get-DbaProcess,告诉它SQL Server名称–SqlInstance(注意:如果您使用的是像我这样的命名实例,。\ InstanceName在这里将不起作用),然后将输出传递给添加管道的Select命令。 (|)以及我们想要的三个字段。

Get-DbaProcess  -SqlInstance JGAVIN-L \ SQL2017- 数据库 MyDatabase |  选择主机,登录,程序			

在数据库中查找连接

如我们所见,数据库中只有一个连接。

如果确定可以终止这些连接,则将对Get-DbaProcess使用相同的开关,但是会将输出重定向到Stop-DbaProcess。

Get-DbaProcess  -SqlInstance JGAVIN-L \ SQL2017- 数据库 MyDatabase |  Stop-DbaProcess			

终止连接

状态字段显示我们已终止该进程。

现在,我们准备使数据库脱机。

将Set-DbaState与相同的-SqlInstance和-Database开关一起使用。我们不会在任何地方输出输出,但是在末尾添加-Offline。

设置DbaDbState -SqlInstance JGAVIN-L \ SQL2017 -数据库MyDatabase的 -offline			

使数据库脱机

您会看到“状态”字段将其离线显示。

我们已经找到了检查数据库中哪些连接以及如何终止它们的更安全方法。最后,这是通过在上一个命令行的末尾添加-Force来自动强制断开连接的方法。

Set-DbaDbState -SqlInstance JGAVIN-L \ SQL2017-数据库MyDatabase- 脱机 -Force			

强制数据库脱机

下一步

我们已经看到了如何使用SSMS,T-SQL和dbatools PowerShell脚本使数据库脱机。这三种方法都做相同的事情。如果您只是想以最快的方式进行选择,或者根据您对T-SQL或PowerShell的满意程度,可以选择任意一种。

这里是一些指向其他MSSQL提示的链接,以及更多信息:

  • 确定SQL Server数据库状态的方法
  • 识别不再使用的SQL Server数据库
  • SQL Server数据库停用检查清单
  • 使用DATABASEPROPERTYEX检索SQL Server数据库属性
  • 使用PowerShell检索SQL Server数据库及其属性的列表
  • SQL Server Management Studio概述(SSMS)

未经允许不得转载:数据库同步软件|Mysql数据同步软件|sqlserver数据库同步工具|异构同步 » 如何使SQL Server数据库脱机

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

syncnavigator 8.6.2 企业版

联系我们联系我们