转-SQL 2005修改系统表

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 服务】--【右键】--【属性】

SQL 2005 修改系统表的两个先决条件——单用户模式

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

"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。

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

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

SQL 2005 修改系统表——DAC错误

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

温州人的思维

思维(1):商人:没人干过这种事,没有先例可循,万一砸了怎么办?温州人:没人干过怕什么?这样才没人跟你抢市场嘛,头道汤味道最好,先人一步的生意最赚钱…

清华男神再获世界大奖,从放牛娃到清华校长,他考研3次,读博7年,做出诺奖级的科研成果...

全世界只有3.14 % 的人关注了爆炸吧知识2月24日,菲列兹伦敦奖评奖委员会宣布,2020年度菲列兹伦敦奖将授予中国科学院院士、清华大学副校长、北京量子信息科学研究院院长薛其坤。帅气的老薛按照评奖委员会的通知,薛其坤是因为在实验上发现量子…

安装MHA中清理Relay log报错

安装MHA中清理Relay log报错[rootMHA3 ~]# /usr/bin/purge_relay_logs --userroot --password123456 -disable_relay_log_purge --port3306 --workdir/opt/mysql/data/2014-08-27 09:19:30: purge_relay_logs script started.install_driver(mysql) failed: Cant locate DBD/m…

mysql序列increment_MySQL 序列 AUTO_INCREMENT

MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。本章我们将介绍如何使用MySQL的序列。使用AUTO_INCREMENTMySQL中最简单使用序列的方法…

SQL 语句中 where 条件后 写上1=1 是什么意思

前言where 11是sql语句条件逻辑判断表达式,由于11成立,恒为真,该表达式11将始终返回"真"。这种写法实际目的是为了获取逻辑值"True",其实诸如22, 123,中中等之类的写法都可以返回逻辑值"True"&…

介绍自定义JDataGrid电子表格版本公式中的函数?

2019独角兽企业重金招聘Python工程师标准>>> How to write function in JDataGrid Spreadsheet Edition? 1. Understand the formula and function API used in JDataGrid Spreadsheet Edition? Obviously you should understand the “Function” and it’s su…

最新研究!新冠病毒被定义为“大流行”背后,竟然还藏着这样凶险的大杀器?...

全世界只有3.14 % 的人关注了爆炸吧知识你知道当一种疾病被定义为大流行(pandemic)时意味着什么吗?大流行(pandemic) 是指一种疾病在短时间内越过省界国界甚至洲界在全世界范围内流行。历史上,有很多疾病都…

js javaScript array 取指定元素索引、判断是否相同、重复、过滤数据

最近写js也多了&#xff0c;Array中有好多方法不够用。自己加了些以后还可能用到。 <script type"text/javascript"> //找到返回所在索引&#xff0c;不存在返回-1 Array.prototype.index function (el) { var i 0; for (var i 0, len this.length; i <…

Linux下查看进程对应的命令绝对路径

为什么80%的码农都做不了架构师&#xff1f;>>> 由于开发环境混乱&#xff0c;多人共享一台物理机&#xff0c;部分软件不是通过系统管理软件中心安装&#xff08;例如&#xff1a;rpm&#xff0c;apt-get&#xff09;, 同时启动软件是在软件当前目录执行 ./XXX 。…

请收藏!这可能是目前最安全的数据加密传输解决方案

问题为了安全性起见&#xff0c;客户要求客户端必须将数据加密后才能传给服务端。起先&#xff0c;准备使用非对称加密&#xff08;RSA&#xff09;方式&#xff0c;但是发现它对原始文本长度有限制。而对称加密(AES)没有长度限制&#xff0c;但是使用固定密钥存在暴露的风险。…

mysql kill hup_kill -HUP pid

kill -HUP pid其中 pid 是进程标识。如果想要更改配置而不需停止并重新启动服务&#xff0c;请使用该命令。在对配置文件作必要的更改后&#xff0c;发出该命令以动态更新服务配置。根据约定&#xff0c;当您发送一个挂起信号(信号 1 或 HUP)时&#xff0c;大多数服务器进程(所…

Windows Live Essentials Wave3 QFE 官方各组件独立安装包

版本是14.0.8064.0206&#xff0c;签名日期为&#xff1a;2009-2-7 可根据自己的需要选择下载安装&#xff01;均可安装在SERVER版上&#xff01; Live Messenger | Live contacts &#xff08;安装Live Messenger的话&#xff0c;contacts 必须&#xff09; Live Writer Live …

厉害了!平均年龄8岁的抽象派画家,网友笑称:这些作品,康定斯基看了都得服气!...

全世界只有3.14 % 的人关注了爆炸吧知识在孩子们的眼中&#xff0c;世间万物都被赋予了无限的想象力&#xff0c;而绘画是他们独特想法和思维的表达。小鸟为什么在水里&#xff1f;因为它想学习游泳。鱼儿为什么会在天上&#xff1f;因为它想看看大地。一支小小的画笔&#xff…

COM组件与.NET技术对比

一、元数据 在COM中所有组件信息都存储在类型库中。.NET中信息都存储在数据集中。一些COM组件有类型库&#xff0c;一些却没有&#xff08;如VB编的&#xff0c;因为C可以用IDL——接口定义语言表述接口和方法&#xff0c;而VB不行&#xff09;。没有的话需要用C头文件来表述接…

Zabbix如何监控Windows机器

最近一直在研究Zabbix监控Windows机器&#xff0c;涉及到如何快速安装agent,如何修改和完善windows监控模板等等。想把自己的经验给大家分享一下&#xff0c;希望对大家有所帮助。1)安装agent客户端 首先分享一下用bat写的自动化安装Windows机器的agentd安装脚本,脚本里面的tc…

如何写出高质量代码

教你写出高质量代码的方法网络上有很多&#xff0c;比如设计原则、设计模式、重构技巧、命名规范等&#xff0c;以上这些本文统统都不会讲。个人理解高质量代码一定是结合业务并深度思考过的产出。很多人拿到需求后&#xff0c;业务和流程还没理顺后就直接编码&#xff0c;然后…

mysql的查表语句_mysql查表语句_MySQL

bitsCN.commysql查表语句[sql]describe table_name;这个命令用来显示一个表格的结构------------------------------------------------| Field | Type | Null | Key | Default | Extra |------------------------------------------------| ID | int(11) | NO | PRI | NULL | …

AOP技术研究 再续

第四部分 .Net平台AOP技术研究 4.1.Net平台AOP技术概览 .Net平台与Java平台相比&#xff0c;由于它至今在服务端仍不具备与unix系统的兼容性&#xff0c;也不具备类似于Java平台下J2EE这样的企业级容器&#xff0c;使 得.Net平台在大型的企业级应用上&#xff0c;常常为人所诟…

震惊!原来现在无所不能的世界主人翁,早已在三千年前就悄然出现!

▲ 点击查看早在春秋时代&#xff0c;鲁班作为机械工程师的祖师爷&#xff0c;就极其擅长且痴迷于一些古怪的机械装置&#xff0c;因此&#xff0c;他除了发明了墨斗、曲尺这些正儿八经的东西之外&#xff0c;最出名的就是用木头&#xff0c;发明了一只据说能在天上飞三天而不落…

ASP.NET MVC 1.0 Result 几何?

Action的返回值类型到底有几个&#xff1f;咱们来数数看。 ASP.NET MVC 1.0 目前一共提供了以下十几种Action返回结果类型&#xff1a; 1. ActionResult&#xff08;base&#xff09; 2. ContentResult 3. EmptyResult 4. HttpUnauthorizedResult 5. …