FROM:http://blog.csdn.net/liangCK/archive/2008/10/07/3029315.aspx

在 SQL Server 2000 中修改系统表的方法大部分人都知道,介绍如何在 SQL 2005 中修改系统表的资料目前还比较少,虽然微软不赞成修改系统表,而且也把修改系统表的代码隐藏起来了。但微软一贯喜欢给自己留个小后门。我是这么想的:最先知道如何修改 SQL 2005 系统表的人只有微软 SQL Server 2005 的设计、开发者。于是就到 msdn 中逛逛,最后终于找到了 SQL 2005 修改系统表的方法:)

SQL 2005 修改系统表的两个先决条件

1. 在单用户模式(single-user mode)下启动 sql server instance(实例)。
2. 使用管理员专用连接(DAC: dedicated administrator connections),连接到 SQL Server Instance

下面,就来具体介绍如何实现这两个修改系统表的先决条件。

1. 单用户模式下启动 SQL Server 2005 Instance(实例)。

【开始】--【运行】--【services.msc】进入 Windows 服务管理器。

找到 【SQL Server 服务】--【右键】--【属性】

根据【可执行文件的路径】内容,我的是:

"D:\Microsoft SQL Server 2005\MSSQL.1\MSSQL\Binn\sqlservr.exe" -sSQLB

命令行下,进入 sqlservr.exe 安装路径,执行:sqlservr.exe -sSQLB -m

C:\>d:
D:\>cd D:\Microsoft SQL Server 2005\MSSQL.1\MSSQL\Binn
D:\Microsoft SQL Server 2005\MSSQL.1\MSSQL\Binn> sqlservr.exe -sSQLB -m

-sSQLB 表示要启动的SQL Server 实例名字为:SQLB;-m 参数表示以单用户模式启动 SQL Server 实例。如果顺利的话,SQL Server 实例就启动起来了。如果启动不了呢,可以重新启动下机器,再试,如果仍然启动不了,那你可以根据报错内容,到网上找找解决方法。

2. 使用 DAC 连接到 SQL Server 2005。

使用 DAC 连接到 SQL Server 2005 最常见的方法就是,在命令行下执行带有 -A 参数的 sqlcmd,如:

c:\sqlcmd -E -S MYPC\SQLB -A

也可以使用 SQL Server 超级用户和密码进入:

c:\sqlcmd -U sa -P **** -S MYPC\SQLB -A

注意:这里是“MYPC\SQLB”(computer_name\instance_name),而不单单只是 SQL Server 实例名“SQLB”。 小知识:“除默认实例外,所有数据库引擎实例都由安装该实例的过程中指定的实例名标识。应用程序必须提供准备连接的计算机的名称和命名实例的实例名。计算机名和实例名以格式 computer_name\ instance_name 指定”。

如果不能通过 DAC 连接到 SQL Server 2005 实例,那你就要检查下,SQL Server Browser 这个服务启动没有。SQL Server Browser 侦听 1434端口(UDP端口),它可以根据客户端发送来的实例名,返回相应的IP 和 Port,从而引导客户端建立正确的连接。

大部分情况下都能顺利完成 DAC 连接。但是,在命令行下操作 SQL Server,你不觉得很痛苦吗,如果没有配置好 cmd 环境,显示的结果总是乱七八糟的。呵呵,我在这里介绍下如何使用 SQL Server Management Studio(SSMS)DAC 到 SQL 2005。DAC 连接跟普通连接不一样,它有个自己专用的端口,我们只要找到这个 DAC 端口,就可以以任何方式(命令行或者 SSMS)连接到 SQL 2005 实例。

如何找到 DAC 的专用端口呢?当你在命令行单用户下启动 sql server 的时候, SQL Server 在屏幕上会输出好多日志信息。关键是找到包含“Dedicated admin connection”的内容:

Server is listening on [ 127.0.0.1 [ipv4] 1183].
Dedicated admin connection support was established for listening locally on port 1183.

这条信息告诉我们,SQL 2005 在网络地址 127.0.0.1 上的 1183 端口监听客户端的 DAC 连接。我们启动 SSMS,在服务器名称中输入:127.0.0.1,1183。这里的 ip 和 port 中间要用英文逗号“,”来分隔。当然,也可以在命令下通过 sqlcmd 来建立 DAC 连接。

c:\sqlcmd -E -S 127.0.0.1,1183

需要注意的是,如果指定了 DAC 端口,就不要在 sqlcmd 后加 -A 参数,否则会出错。这时候,也不需要启动 SQL Server Browser 了,因为我们已经告诉 sqlcmd 要连接到的 DAC 地址和端口是:127.0.0.1,1183。

就可以通过 DAC 连接到 SQL 2005 中,这时候会出现个错误,忽略它。

3. 在 SQL 2005 中修改系统表

use master
gocreate table ddd (id int not null)
goinsert into ddd values(10)
go

这时候,我们创建了一个表:ddd。下面在 SQL 2005 系统表 sys.sysschobjs 中查询这个表“ddd”的元数据。sys.sysschobjs 就类似于 SQL 2000 中的系统表 dbo.sysobjects。

select * from sys.sysschobjs where name = 'ddd'

下面列出的结果集中,由于版面的缘故,我省略了 created, modified 两个日期字段内容。

id         name  nsid nsclass status   type pid  pclass intprop  created modified
---------- ----- ---- ------- -------- ---- ---- ------ -------- ------- --------
1211151360  ddd   1    0       917504   U    0    1      1       2008*** 2008***

这时候,我想把表“ddd”更名为“sqlstudy”:

update sys.sysschobjs set name = 'sqlstudy' where name = 'ddd'
警告: 数据库 ID 1 中的系统表 ID 34 已直接更新,但可能未维护缓存一致性。应重新启动 SQL Server。
(1 行受影响)

因为有缓存导致不一致,新的表名字可能没有马上生效,在命令行 Ctrl+C,重新启动 SQL Server 2005。就可以看到表“ddd”已经改名为“sqlstudy”了。

select * from sqlstudy
id
-------
10

补充内容:查看 SQL 2005 系统表的语句。

select name from sys.all_objects where type = 'S' order by name
name
-------------------
sysallocunits
sysasymkeys
sysbinobjs
sysbinsubobjs
syscerts
syschildinsts
sysclsobjs
syscolpars
sysconvgroup
sysdbfiles
sysdbreg
sysdercv
sysdesend
sysendpts
sysfiles1
sysftinds
sysguidrefs
syshobtcolumns
syshobts
sysidxstats
sysiscols
syslnklgns
syslogshippers
sysmultiobjrefs
sysnsobjs
sysobjkeycrypts
sysobjvalues
sysowners
sysprivs
sysqnames
sysremsvcbinds
sysrmtlgns
sysrowsetcolumns
sysrowsetrefs
sysrowsets
sysrts
sysscalartypes
sysschobjs
sysserefs
syssingleobjrefs
syssqlguides
systypedsubobjs
sysusermsgs
syswebmethods
sysxlgns
sysxmitqueue
sysxmlcomponent
sysxmlfacet
sysxmlplacement
sysxprops
sysxsrvs

在 SQL Server 2005 master 数据库中,共有 51 个系统表。并且这些系统表的 schema 是 “sys”。

本文《SQL 2005 修改系统表方法》示例,在 SQL Server 2005 Enterprise Edition SP2(9.00.3042.00) 环境下运行通过。操作系统:Windows Server 2003。

本文参考:http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=89594&SiteID=1

转载于:https://www.cnblogs.com/xioxu/archive/2009/02/20/1394995.html

转-SQL 2005修改系统表相关推荐

  1. 查看SQL Server Resource Database以及修改系统表

    参考文献: SQL 2005修改系统表 SQL Server 2005中修改系统表的方法 如何登入DAC(SQL Server 2005) ResourceDB Location Changes Re ...

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

    Server 2005 专用管理员连接 (DAC) 使用技巧 1 什么是专用管理员连接? SQL Server 2005 为管理员提供了一种特殊的诊断连接,以供在无法与服务器建立标准连接时使用. 2 ...

  3. [转载] sql server 2000系统表解释

    sql server 2000系统表解释 汇总了几个比较有用的系统表,内容摘自联机帮助 sysobjects --------------- 在数据库内创建的每个对象(约束.默认值.日志.规则.存储过 ...

  4. 转:[MSSQL] - SQL Server 2000 系统表详细说明

    转:http://blog.csdn.net/ztf007/archive/2007/10/20/1834168.aspx SQL Server 2000 系统表详细说明 sysaltfiles  主 ...

  5. oracle维护常用SQL语句(查看系统表和视图)

    转:http://www.360doc.com/content/11/1230/15/7489308_176090474.shtml oracle维护常用SQL语句(查看系统表和视图) 1.查看表空间 ...

  6. Apache Drill介绍-SQL语句和系统表查询

    Apache Drill介绍-SQL语句和系统表查询 Apache Drill 主要用于查询,主要关注select 和 建表语句,Drill 支持select 很标准, 这次主要介绍create语句, ...

  7. SQL Server 2000 ——系统表和系统视图

    一.系统表 数据字典的详细信息请查SQL SERVER BOL,这里仅列出一部分. 1.1.sysservers 1.查看所有本地服务器及链接服务器 select * from master..sys ...

  8. SQL Server 常用系统表(一) sysobjects

    (一) sysobjects 系统的对象表 保存当前数据库中的所有对象,约束.默认值.表.视图.存储规则及日志等. sysobjects 表结构(常用字段标红): 列名 数据类型 描述 name sy ...

  9. sql 2005判断某个表或某个表中的列是否存在

    /// <summary>         /// 判断是否存在某表的某个字段         /// </summary>         /// <param nam ...

最新文章

  1. getRunningTasks和getRunningAppProcesses失效
  2. 只需几分钟跟小猫学前端(内含视频教程):nodejs基础之用express、ejs、mongdb建设简单的网站...
  3. Pycharm使用之设置代码字体大小和颜色主题
  4. ANSI/UTF-8/UCS2(UTF-16),以及回车换行
  5. java 证书公钥 私钥_ssl - 在Java Key中导入私钥/公钥证书对
  6. set是无序集合,放入set中的元素通过iterator输出时候是无序的
  7. SAP License:COPA分摊循环-FKART开票类型作为循环接收方
  8. 2019年最新 Python 模拟登录知乎 支持验证码
  9. 网上一些《算法(第四版)》习题答案链接
  10. 匹配滤波器为何使得输出SNR最大?
  11. vue-router 三级路由
  12. 【UI设计】扁平化设计之流行色值
  13. 蛋白质结构预测---残基接触的基础知识(二)
  14. 计算机建立局域网共享,局域网两台电脑如何建立共享文件夹
  15. 那个单位用计算机系统冷却,消防知识100题
  16. EntityFramework 用Moles的mock
  17. Kali Linux安装GVM 20.08(前OpenVas)
  18. (转载)持续集成(第二版)[来自:Martin Fowler]
  19. Zabbix简单检查的使用
  20. 普歌-(mac m1亲身教程)iterm配置oh-my-zsh以及iterm配置dracula主题

热门文章

  1. Microsoft SQL Server 存储过程
  2. windows2008(64位)下iis7.5中的url伪静态化重写(urlrewrite)
  3. 数据采集录入填报时如何只更新当前修改行
  4. selective gaussian blur /adaptive-blur
  5. partition by 函数
  6. 武汉游记,三件新鲜奇葩事
  7. 初学web开发需要掌握哪些方面?
  8. 一个简单的C#在线IDE示例
  9. TypeScript入门-枚举
  10. 基于nodejs实现本地网页服务器-实现手机测试电脑开发的移动端网页