SQL 2005使用专用管理员连接(DAC)的技巧及修改系统表的方法

SQL 2005使用专用管理员连接(DAC)的技巧及修改系统表的方法

在 SQL Server 2005 中,有一种特殊的连接方式叫做“专用管理员连接(Dedicated Administrator Connection, DAC)”,它可以让管理员在无法通过普通连接方式访问数据库服务器时,通过单独的连接方式登录到一个可控制的会话中,在该会话中执行管理任务。

连接专用管理员连接(DAC)

连接 DAC 的语法为:

sqlcmd –S <server\instance> –A

其中:

  • <server\instance>: 数据库服务器的名称和实例名称
  • -A: 表示使用专用管理员连接,这个选项必须指定

例如,要连接名为“DEV-SQL”、实例名为“SQLEXPRESS”的数据库服务器,可以使用以下命令:

sqlcmd -S DEV-SQL\SQLEXPRESS -A

连接成功后,可以使用 T-SQL 语句在该会话中进行管理任务。

修改系统表的方法

在 DAC 会话中修改系统表通常是一种紧急的手段,因为这种操作可能会对系统造成不可预知的影响,建议在生产环境中避免使用。

以下是在 DAC 会话中修改系统表的方法:

  1. 连接 DAC 会话,执行以下命令:
USE master;
GO

这个命令让当前使用的数据库为 master,master 是 SQL Server 的系统数据库。

  1. 在 DAC 会话中启用专家配置选项,执行以下命令:
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'allow updates', 1;
RECONFIGURE;
GO

这个命令启用了专家配置选项,并将 allow updates 配置项设置为 1,允许更新系统表。

  1. 修改系统表,例如修改 sys.sysobjects 表:
UPDATE sys.sysobjects SET name = 'my_table' WHERE id = object_id('dbo.my_table');
GO

这个命令将名为“my_table”的表的名称修改为“my_table”。要注意,修改系统表可能会导致 SQL Server 出现不可预知的行为或损坏数据,因此在进行这种操作前务必对数据库进行备份。

  1. 在 DAC 会话中禁用专家配置选项,执行以下命令:
sp_configure 'allow updates', 0;
RECONFIGURE;
GO
sp_configure 'show advanced options', 0;
RECONFIGURE;
GO

这个命令禁用了 allow updates 配置项,并将 show advanced options 配置项设置为 0,回到默认的系统配置。

示例

假设我们有一个名为“test_db”的数据库,其中包含一个名为“my_table”的表,现在我们想要将“my_table”的名称修改为“your_table”。

  1. 连接 DAC 会话,执行以下命令:
sqlcmd -S DEV-SQL\SQLEXPRESS -A
USE master;
GO
  1. 在 DAC 会话中启用专家配置选项,执行以下命令:
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'allow updates', 1;
RECONFIGURE;
GO
  1. 修改系统表:
USE test_db;
GO
UPDATE sys.sysobjects SET name = 'your_table' WHERE id = object_id('dbo.my_table');
GO
  1. 在 DAC 会话中禁用专家配置选项,执行以下命令:
sp_configure 'allow updates', 0;
RECONFIGURE;
GO
sp_configure 'show advanced options', 0;
RECONFIGURE;
GO

需要注意的是,在修改系统表前务必进行数据库备份,以便在需要时进行数据恢复。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL 2005使用专用管理员连接(DAC)的技巧及修改系统表的方法 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • Mybatis和orcale update语句中接收参数为对象的实例代码

    针对”Mybatis和oracle update语句中接收参数为对象的实例”这个问题,我将提供以下完整攻略。 1. 定义数据模型 首先,需要定义一个Java类来表示需要更新的数据模型。比如我们定义一个User类,具有id、name和age三个属性。 public class User { private Long id; private String nam…

    database 2023年5月21日
    00
  • Win2003系统安装SQL Server2000后1433端口未开放的解释

    Win2003系统安装SQL Server2000后1433端口未开放的解决方法如下: 1. 检查SQL Server配置 首先,需要检查SQL Server是否已配置为允许远程连接。具体步骤如下: 打开SQL Server Enterprise Manager。 在左侧导航栏中,展开“Microsoft SQL Servers”和 “[your serve…

    database 2023年5月22日
    00
  • MYSQL在centos上首次启动

    1.启动mysql [root@iZ8vbf6lodiycj95t5h03xZ centos7_mysql_own]# service mysqld start Redirecting to /bin/systemctl start mysqld.service 2.查看mysql服务状态 [root@iZ8vbf6lodiycj95t5h03xZ ~]# …

    MySQL 2023年4月12日
    00
  • Redis使用ZSET实现消息队列使用总结一

    转载请注明出处:    redis用zset做消息队列会出现大key的情况吗 在Redis中,使用zset作为消息队列,每个消息都是一个元素,元素中有一个分数代表了该消息的时间戳。如果系统中有大量消息需要入队或者大量的不同的队列,这个key的体积会越来越大,从而可能会出现大key的情况。 当Redis存储的某个键值对的大小超过实例的最大内存限制时,会触发Re…

    Redis 2023年4月10日
    00
  • mysql-5.7.28 在Linux下的安装教程图解

    MySQL-5.7.28 在Linux下的安装教程图解 一、下载和安装 下载MySQL-5.7.28 (示例下载地址:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz) $ wget https://cdn.mysql.com//Down…

    database 2023年5月22日
    00
  • SQL中ALTER和UPDATE命令的区别

    ALTER和UPDATE都是SQL命令,但它们的作用不同。 ALTER命令 ALTER命令主要用于修改数据库表的结构,比如添加、删除或改变列的属性。 以下是ALTER命令的语法: ALTER TABLE table_name ADD COLUMN column_name data_type optional_arguments; 在这个语句中,ALTER T…

    database 2023年3月27日
    00
  • redis——队列

    Posted on 2012-02-29 最近忙着用Redis实现一个消息通知系统,今天大概总结了一下技术细节,其中演示代码如果没有特殊说明,使用的都是PhpRedis扩展来实现的。   内存 比如要推送一条全局消息,如果真的给所有用户都推送一遍的话,那么会占用很大的内存,实际上不管粘性有多高的产品,活跃用户同全部用户比起来,都会 小很多,所以如果只处理登录…

    Redis 2023年4月11日
    00
  • Centos/Ubuntu下安装nodejs教程

    下面是CentOS/Ubuntu下安装Node.js的完整攻略,并且同时提供了两个实例操作: 1. 安装Node.js 1.1 CentOS下安装Node.js 在 CentOS 中,您可以使用以下命令来安装Node.js: sudo yum install -y nodejs 安装完成后,可使用以下命令查看已安装的Node.js版本: node -v 1.…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部