<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sybase数据库技术，数据库恢复专家 &#187; DBCC</title>
	<atom:link href="http://www.dbainfo.net/tag/dbcc/feed" rel="self" type="application/rss+xml" />
	<link>https://www.dbainfo.net</link>
	<description>提供Sybase ASE及Sybase SQL Anywhere数据库修复服务，电话：13811580958(微信)，QQ：289965371！We have many years of experience in recovering data from damanged Sybase devices. Contact us by Phone: +86 13811580958 Wechat: 13811580958 Email: 289965371@qq.com</description>
	<lastBuildDate>Sat, 14 Jun 2025 16:28:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>dbcc配置过程</title>
		<link>https://www.dbainfo.net/config_dbccdb.htm</link>
		<comments>https://www.dbainfo.net/config_dbccdb.htm#comments</comments>
		<pubDate>Wed, 26 Sep 2012 08:57:25 +0000</pubDate>
		<dc:creator>dbainfo</dc:creator>
				<category><![CDATA[Sybase ASE]]></category>
		<category><![CDATA[DBCC]]></category>

		<guid isPermaLink="false">http://www.dbainfo.net/?p=1936</guid>
		<description><![CDATA[目标数据库：andkylee，大小：3300M，其中数据段2700M，日志段600M。为其配置dbcc检查使用 dbcc checkstorage 的准备工作 1.根据用户数据库andkylee的情况获取dbccdb的空间大小、工作空间大小、高速缓存大小、工作进程数的建议值 &#160; sp_plan_dbccdb &#34;andkylee&#34; go 显示结果如下： Recommended size for dbccdb database is 94MB (data = 92MB, log = 2MB). No suitable devices for dbccdb in master..sysdevices. Recommended values for workspace size, cache size and process count are: dbname&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; scan ws&#160; text ws&#160; cache&#160; comp mem&#160; process count andkylee&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 40576K&#160;&#160; 10176K&#160;&#160; 10151K [...]]]></description>
			<content:encoded><![CDATA[<p>
	目标数据库：andkylee，大小：3300M，其中数据段2700M，日志段600M。为其配置dbcc检查使用 dbcc checkstorage 的准备工作<br />
	<strong><br />
	1.根据用户数据库andkylee的情况获取dbccdb的空间大小、工作空间大小、高速缓存大小、工作进程数的建议值</strong><br />
	&nbsp;</p>
<blockquote>
<p>sp_plan_dbccdb &quot;andkylee&quot;<br />
		go</p>
</blockquote>
<p>显示结果如下：</p>
<p>Recommended size for dbccdb database is 94MB (data = 92MB, log = 2MB).<br />
	No suitable devices for dbccdb in master..sysdevices.<br />
	Recommended values for workspace size, cache size and process count are:<br />
	dbname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scan ws&nbsp; text ws&nbsp; cache&nbsp; comp mem&nbsp; process count<br />
	andkylee&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 40576K&nbsp;&nbsp; 10176K&nbsp;&nbsp; 10151K 0K&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<br />
	(return status = 0)<br />
	由上，建议dbccdb的空间大小至少94M（其中数据段至少92M，日志段至少2M），scan工作空间至少40576K，text工作空间至少10176K，命名高速缓存至少10151K，工作进程数至少3个。<span id="more-1936"></span></p>
<p>	<strong>2.如果必要，调整ASE的工作进程数</strong><br />
	在ASE中配置4个工作进程，配置dbccdb最大可用工作进程数为：3</p>
<blockquote>
<p>sp_configure &quot;number of worker processes&quot;,4<br />
		go</p>
</blockquote>
<p>
	<strong>3.为dbccdb创建命令高速缓存dbccdb_cache</strong><br />
	配置一个dbcc checkstorage专用的命名高速缓存，不仅可以提高性能并且还可以使数据库的一致性检查对其他用户的影响降到最小。dbcc checkstorage要求在命名高速缓存中创建8页的I/O缓存池。</p>
<p>	配置大小为30M的命令高速缓存dbccdb_cache，其中8页的I/O缓存池为10M</p>
<blockquote>
<p>sp_cacheconfig dbccdb_cache,&quot;30M&quot;<br />
		go</p>
</blockquote>
<p>命令高速缓存dbccdb_cache需要重启ASE后才能生效。</p>
<p>
	配置10M的8页I/O缓冲池：</p>
<blockquote>
<p>sp_poolconfig dbccdb_cache,&quot;10M&quot;,&quot;32k&quot;<br />
		go</p>
</blockquote>
<p>
	使用命令sp_cacheconfig dbccdb_cache查看命令高速缓存，结果如下：<br />
	&nbsp;Cache Name&nbsp;&nbsp; Status&nbsp;&nbsp; Type&nbsp;&nbsp;&nbsp;&nbsp; Config Value&nbsp;&nbsp; Run Value<br />
	&nbsp;------------ -------- -------- -------------- ------------<br />
	&nbsp;dbccdb_cache Active&nbsp;&nbsp; Mixed&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30.00 Mb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30.00 Mb<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------------ ------------<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Total&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30.00 Mb&nbsp;&nbsp;&nbsp;&nbsp; 30.00 Mb<br />
	==========================================================================<br />
	Cache: dbccdb_cache,&nbsp;&nbsp; Status: Active,&nbsp;&nbsp; Type: Mixed<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Config Size: 30.00 Mb,&nbsp;&nbsp; Run Size: 30.00 Mb<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Config Replacement: strict LRU,&nbsp;&nbsp; Run Replacement: strict LRU<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Config Partition:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1,&nbsp;&nbsp; Run Partition:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4<br />
	&nbsp;IO Size&nbsp; Wash Size&nbsp;&nbsp;&nbsp;&nbsp; Config Size&nbsp; Run Size&nbsp;&nbsp;&nbsp;&nbsp; APF Percent<br />
	&nbsp;-------- ------------- ------------ ------------ -----------<br />
	&nbsp;&nbsp;&nbsp;&nbsp; 4 Kb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4096 Kb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.00 Mb&nbsp;&nbsp;&nbsp;&nbsp; 20.00 Mb&nbsp;&nbsp;&nbsp;&nbsp; 20<br />
	&nbsp;&nbsp;&nbsp; 32 Kb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2048 Kb&nbsp;&nbsp;&nbsp;&nbsp; 10.00 Mb&nbsp;&nbsp;&nbsp;&nbsp; 10.00 Mb&nbsp;&nbsp;&nbsp;&nbsp; 20<br />
	(return status = 0)</p>
<p>	<strong>4.如果dbccdb存在，则在创建新的dbccdb数据库之前，删除它及其相关的所有设备</strong></p>
<blockquote>
<p>use master<br />
		go<br />
		if exists (select * from master.dbo.sysdatabases where name = &quot;dbccdb&quot; ) <br />
		begin<br />
		print &quot;Dropping the dbccdb database................&quot;<br />
		drop database dbccdb<br />
		end<br />
		go</p>
</blockquote>
<p>
	<strong>5.初始化用于dbccdb数据和日志的磁盘设备dbccdb_dat和dbccdb_log</strong><br />
	为用户数据库andkylee建议的dbccdb的数据段至少92M，日志段至少2M。在此创建大小为200M的设备dbccdb_dat，20M的设备dbccdb_log。</p>
<blockquote>
<p>use master<br />
		go<br />
		disk init&nbsp; name&nbsp; = &#39;dbccdb_dat&#39;,<br />
		physname&nbsp; = &#39;d:\syb_data\dbccdb_dat.dat&#39;,<br />
		size&nbsp; = &#39;200M&#39;<br />
		go <br />
		disk init&nbsp; name&nbsp; = &#39;dbccdb_log&#39;,<br />
		physname&nbsp; = &#39;d:\syb_data\dbccdb_log.dat&#39;,<br />
		size&nbsp; = &#39;20M&#39;<br />
		go</p>
</blockquote>
<p>
	<strong>6.在数据库设备上创建dbccdb数据库</strong></p>
<blockquote>
<p>use master<br />
		go<br />
		create database dbccdb <br />
		on dbccdb_dat= &#39;200M&#39;<br />
		log on dbccdb_log=&#39;20M&#39;<br />
		go</p>
</blockquote>
<p>	<strong>7.将用于 scan 和 text 工作空间的段添加到 dbccdb 的数据设备上</strong></p>
<blockquote>
<p>use dbccdb<br />
		go<br />
		sp_addsegment scanseg,dbccdb,dbccdb_dat<br />
		go<br />
		sp_addsegment textseg,dbccdb,dbccdb_dat<br />
		go</p>
</blockquote>
<p>
	<strong>8.填充dbcc数据库并安装dbcc存储过程</strong><br />
	installdbccdb 脚本在试图创建表之前检查数据库是否存在。它只创建dbccdb 中尚未存在的那些表。如果任何一个 dbccdb 表被损坏，请使用 drop table 将其删除，然后使用 installdbccdb 重新创建。<br />
	isql -Usa&nbsp; -P&lt;password&gt;&nbsp; -S&lt;servername&gt; -i%SYBASE%\%SYBASE_ASE%\scripts\installdbccdb -odbccdb.log</p>
<p>	<strong>9.创建并初始化 scan 和 text 工作空间</strong><br />
	scan工作空间至少40576K，text工作空间至少10176K。在此创建120M的scan工作空间：scan_andkylee，50M的text工作空间：text_andkylee</p>
<blockquote>
<p>use dbccdb<br />
		go<br />
		sp_dbcc_createws dbccdb, scanseg, scan_andkylee, scan, &quot;120M&quot;<br />
		go<br />
		sp_dbcc_createws dbccdb, textseg, text_andkylee, text, &quot;50M&quot;<br />
		go</p>
</blockquote>
<p>删除工作空间使用 drop table scan_andkylee</p>
<p>	<strong>10、 更新dbcc_config配置值</strong><br />
	max worker processes 为每个目标数据库指定 dbcc checkstorage 使用的工作进程最大数，而 number of worker processes 指定 Adaptive Server 支持的工作进程总数。工作进程不是专用来运行 dbcc checkstorage 操作的。<br />
	将 number of worker processes 的值设置得足够高，使之支持 max worker processes 指定的进程数。工作进程数低会降低 dbcc checkstorage 的性能，减少其资源消耗。 dbcc checkstorage 使用的进程数不会多于数据库使用的数据库设备数。<br />
	maximum parallel degree 和 maximum scan parallel degree 对于 dbcc checkstorage 的并行功能没有影响。将 maximum parallel degree 设置为 1时，不会禁用 dbcc checkstorage 中的并行度。<br />
	dbcc checkstorage 需要多个工作进程，所以 number of worker processes 必须至少设置为 1 以支持父进程和工作进程。</p>
<blockquote>
<p>use dbccdb<br />
		go<br />
		--为数据库andkylee配置最大工作进程数：3<br />
		exec sp_dbcc_updateconfig andkylee,&quot;max worker processes&quot;,&quot;3&quot;<br />
		--为数据库andkylee绑定30M的dbccdb_cache<br />
		exec sp_dbcc_updateconfig andkylee,&quot;dbcc named cache&quot;,dbccdb_cache,&quot;30M&quot;<br />
		--为数据库andkylee指定scan和text工作空间<br />
		exec sp_dbcc_updateconfig andkylee,&quot;scan workspace&quot;,scan_andkylee<br />
		exec sp_dbcc_updateconfig andkylee,&quot;text workspace&quot;,text_andkylee<br />
		exec sp_dbcc_updateconfig andkylee,&quot;OAM count threshold&quot;,&quot;5&quot;<br />
		exec sp_dbcc_updateconfig andkylee,&quot;IO error abort&quot;,&quot;3&quot;<br />
		exec sp_dbcc_updateconfig andkylee,&quot;linkage error abort&quot;,&quot;8&quot;<br />
		go</p>
</blockquote>
<p><strong><br />
	11.显示目标数据库的配置信息<br />
	</strong></p>
<blockquote>
<p>sp_dbcc_configreport <br />
		go</p>
</blockquote>
<p><strong><br />
	12.检查数据库andkylee<br />
	</strong></p>
<blockquote>
<p>dbcc checkstorage(andkylee)<br />
		go</p>
</blockquote>
<p>检查结果如下：<br />
	Checking andkylee: Logical pagesize is 4096 bytes<br />
	(return status = 0)<br />
	DBCC CHECKSTORAGE for database &#39;andkylee&#39; sequence 1 completed at Sep 26 2012&nbsp; 4<br />
	:42PM. 3 faults and 75248 suspect conditions were located. 0 checks were aborted<br />
	. You should investigate the recorded faults, and plan a course of action that w<br />
	ill correct them.<br />
	Suspect conditions are to be treated as faults if the same suspect condition per<br />
	sists in subsequent CHECKSTORAGE operations, or if they are also detected by oth<br />
	er DBCC functions.</p>
<p>	<strong>13.生成dbcc报告</strong><br />
	sp_dbcc_summaryreport在指定的日期或该日期之前为指定的数据库完成的所有dbcc checkstorage操作。</p>
<blockquote>
<p>sp_dbcc_summaryreport<br />
		go</p>
</blockquote>
<p>
	BCC Operation : checkstorage<br />
	================================================================================<br />
	&nbsp;Database Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Time&nbsp;&nbsp; Operation ID Hard Faults Soft Faults Text Columns Abort Count User Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
	&nbsp;------------------------------ -------------------- ---------- ------------ ----------- ----------- ------------ ----------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- <br />
	&nbsp;andkylee&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 09/26/2012 16:40:27&nbsp; 16:42:32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 75248&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6355&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 sa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>	(1 row affected)<br />
	&nbsp;<br />
	================================================================================<br />
	(return status = 0)<br />
	<strong><br />
	14.报告数据库对象中发现的故障</strong><br />
	sp_dbcc_faultreport 报告指定数据库对象中在指定日期或该日期之前发生的故障。可生成短报告，也可生成长报告。下面显示短报告：</p>
<blockquote>
<p>sp_dbcc_faultreport&nbsp; &#39;short&#39;<br />
		go</p>
</blockquote>
<p>
	Database Name : andkylee<br />
	&nbsp;<br />
	&nbsp;Table Name&nbsp;&nbsp;&nbsp;&nbsp; Index&nbsp;&nbsp; PartitionId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fault Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Page Number&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
	&nbsp;-------------- ------- ----------------- ---------------------------------------- ----------------- <br />
	&nbsp;ALLOCATION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99 100007 (extent id error)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#f00;"><strong>1008 </strong></span><br />
	&nbsp;sysencryptkeys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 98 100033 (non-contiguous free space error)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#f00;"><strong>633 </strong></span><br />
	&nbsp;sysencryptkeys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 98 100036 (deleted row count error)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#f00;"><strong>633 </strong></span></p>
<p>	(1 row affected)<br />
	(return status = 0)</p>
<p>
	由上面得检查结果，可以看到用户数据库andkylee的页面633和1008存在分配错误。<br />
	执行： dbcc page(&#39;andkylee&#39;,1008,1)报下面的错误：<br />
	<span style="color:#f00;">DATA:Error: Non-first OAM page 1008 has non-zero OAMSTRUCT entries: total_used: 2 total_unused: 6 rowsperpage: 0<br />
	Error: Non-first OAM page 1008 has attribute entries: Attribute status:1, Attribute count: 10</span><br />
	OAM pg #&nbsp; 0:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1008 has the following 1 entry (allocpg:used/unused):</p>
<p>	[&nbsp;&nbsp; 0]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 768:&nbsp; 2/&nbsp; 6</p>
<p>	执行： dbcc page(&#39;andkylee&#39;,633,1)的结果如下：<br />
	PAGE HEADER:<br />
	Page header for page 0x2C413000<br />
	pageno=633 nextpg=0 prevpg=0 ptnid=98 sysencryptkeys timestamp=0000 0010b6ff<br />
	nextrno=2 level=0 indid=0 freeoff=471 minlen=22<br />
	page status bits: 0x811 (0x0800 (PG_XHEADER), 0x0010 (PG_RNOFREE), 0x0001 (PG_DATA))<br />
	second set of page status bits (dol_stat2): 0x02 (0x02 (PG2_DOL_DATAPG))<br />
	dol_pprivstat status bits: 0x00 (0x00)<br />
	pagesize=4096, page version=1, ncfs=169,<span style="color:#f00;"> ndeleted=65535</span>, insert free space=3672<br />
	pagetailts=0xb6ff<br />
	ndeleted的值明显大于DOL页面允许的最大行数：337。<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Item dependent on page size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 2048&nbsp;&nbsp;&nbsp; 4096&nbsp;&nbsp;&nbsp; 8192&nbsp;&nbsp;&nbsp; 16384<br />
	-----------------------------------------------------------------------------------------------------------<br />
	&nbsp; Max number of rows per APL data page&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 256&nbsp;&nbsp;&nbsp;&nbsp; 256&nbsp;&nbsp;&nbsp;&nbsp; 256&nbsp;&nbsp;&nbsp;&nbsp; 256<br />
	&nbsp; Max number of rows per DOL data page&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 166&nbsp;&nbsp;&nbsp;&nbsp; 337&nbsp;&nbsp;&nbsp;&nbsp; 678&nbsp;&nbsp;&nbsp;&nbsp; 1361<br />
	&nbsp;</p>
<p><strong><br />
	15.生成指定对象的分配统计报告</strong></p>
<blockquote>
<p>sp_dbcc_statisticsreport andkylee,&quot;sysobjects&quot;<br />
		go</p>
</blockquote>
<div style="clear: both; margin: 10px 0pt; border: 1px dashed rgb(153, 153, 153); font-size: 12px; padding: 5px 10px;">
<li>本文链接地址：<a href="https://www.dbainfo.net/config_dbccdb.htm">https://www.dbainfo.net/config_dbccdb.htm</a>；</li>
<li>本文为dbainfo个人原创，请在尊重作者劳动成果的前提下进行转载；</li>
<li>转载务必注明原始出处 : <a href="https://www.dbainfo.net/">Sybase数据库技术，数据库恢复专家</a>；</li>
<li>对《<a href="https://www.dbainfo.net/config_dbccdb.htm">dbcc配置过程</a>》有何疑问或见解，请在本文下方发表；</li>
<li>对网站还有其他问题或建议，请提交在<a href="https://www.dbainfo.net/messages" target="_blank">留言板</a>，谢谢！</li>
</div>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2010-12-27 -- <a href="https://www.dbainfo.net/one-undocument-dbcc-command-handover-table-ownership.htm" title="使用重启数据库的未认证DBCC命令来移交表的所有权">使用重启数据库的未认证DBCC命令来移交表的所有权</a> (2)</li><li>2010-08-23 -- <a href="https://www.dbainfo.net/direct-modify-sqlserver-data-page-by-dbcc-writepage.htm" title="利用dbcc writepage命令修改SQL SQLSERVER中的物理页面上的内容">利用dbcc writepage命令修改SQL SQLSERVER中的物理页面上的内容</a> (3)</li><li>2010-02-23 -- <a href="https://www.dbainfo.net/sybase-ase-flashback-table-to-before-drop-table.htm" title="成功恢复drop table的表内数据">成功恢复drop table的表内数据</a> (3)</li><li>2009-11-18 -- <a href="https://www.dbainfo.net/sql-server-dbcc-synta.htm" title="SQL SERVER DBCC命令解释">SQL SERVER DBCC命令解释</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>https://www.dbainfo.net/config_dbccdb.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用重启数据库的未认证DBCC命令来移交表的所有权</title>
		<link>https://www.dbainfo.net/one-undocument-dbcc-command-handover-table-ownership.htm</link>
		<comments>https://www.dbainfo.net/one-undocument-dbcc-command-handover-table-ownership.htm#comments</comments>
		<pubDate>Mon, 27 Dec 2010 08:21:35 +0000</pubDate>
		<dc:creator>dbainfo</dc:creator>
				<category><![CDATA[Sybase ASE]]></category>
		<category><![CDATA[DBCC]]></category>
		<category><![CDATA[dbcc dbreboot]]></category>
		<category><![CDATA[表所有权]]></category>

		<guid isPermaLink="false">http://www.dbainfo.net/?p=632</guid>
		<description><![CDATA[ASE 15.7 新增了命令可以将数据库对象的所有权从一个所有者移交给另一个所有者。 比如将表customer的所有权从dbo移交给bill，使用命令： alter table dbo.customer modify owner bill 不仅仅限于表，还有其它数据库对象包括：视图、存储过程、用户定义函数、默认值、规则、自定义数据类型、加密密钥等； 一次性可以授予多个数据库对象： 1、将 bill 拥有的所有表的所有权都移交给 eric： &#160;&#160;&#160; alter table bill.* modify owner eric preserve permissions 2、将 bill 拥有的所有对象的所有权都移交给 eric： &#160; &#160; alter all bill.* modify owner eric preserve permissions preserve permissions：针对这些对象的所有显式授予或撤消的权限都将被保留，并且权限的 grantor 将更改为新的所有者。------------------------------------------------------------------------------------------------------------------------------------------------------- 以下提供的方法适用于低于ASE 15.7的版本！ 和SQL Server很相似，Sybase ASE数据库有一些未认证的DBCC命令。日常的维护过程中，需要一些Sybase认证的、公开的DBCC命令来完成，比如：检查数据库或者表的一致性、物理存储分配一致性、重建索引等等。对于这些公开的DBCC命令，Sybase公司是提供技术支持保障的。那些未公开的也就是未认证的DBCC命令，仅限Sybase内部工程师使用；Sybase公司不提供技术支持也不会对于此产生的问题负责。 所以，不要在生产环境上使用未认证的DBCC命令。在测试环境上研究学习使用倒是可以的。 需要记住的是：没人对这些未认证的DBCC产后的后果负责。 本篇介绍一个用来关闭或者重启某个用户数据库的未认证DBCC命令：dbcc dbreboot。顺便介绍一个修改对象所有者的方法。因为在ASE中对象的所有权是不能移交的，其它用户只有使用权。这点和中国土地权方面很类似吗？美国人信奉私有制，怎么设计出来这个数据库实现思路？呵呵，有点扯远了~~~ 这边的测试环境是ASE15.0.3，我不确定从哪个ASE版本开始支持这个dbcc dbreboot命令的。 首先用isql连接到ASE15.0.3数据库，先打开在屏幕显示输出信息的选项， [...]]]></description>
			<content:encoded><![CDATA[<p><!--[if !mso]></p>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<p><![endif]--><!--[if gte mso 9]><xml><br />
 <w:WordDocument><br />
  <w:View>Normal</w:View><br />
  <w:Zoom>0</w:Zoom><br />
  <w:TrackMoves>false</w:TrackMoves><br />
  <w:TrackFormatting/><br />
  <w:PunctuationKerning/><br />
  <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing><br />
  <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><br />
  <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><br />
  <w:ValidateAgainstSchemas/><br />
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid><br />
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent><br />
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText><br />
  <w:DoNotPromoteQF/><br />
  <w:LidThemeOther>EN-US</w:LidThemeOther><br />
  <w:LidThemeAsian>ZH-CN</w:LidThemeAsian><br />
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript><br />
  <w:Compatibility><br />
   <w:SpaceForUL/><br />
   <w:BalanceSingleByteDoubleByteWidth/><br />
   <w:DoNotLeaveBackslashAlone/><br />
   <w:ULTrailSpace/><br />
   <w:DoNotExpandShiftReturn/><br />
   <w:AdjustLineHeightInTable/><br />
   <w:BreakWrappedTables/><br />
   <w:SnapToGridInCell/><br />
   <w:WrapTextWithPunct/><br />
   <w:UseAsianBreakRules/><br />
   <w:DontGrowAutofit/><br />
   <w:SplitPgBreakAndParaMark/><br />
   <w:DontVertAlignCellWithSp/><br />
   <w:DontBreakConstrainedForcedTables/><br />
   <w:DontVertAlignInTxbx/><br />
   <w:Word11KerningPairs/><br />
   <w:CachedColBalance/><br />
   <w:UseFELayout/><br />
  </w:Compatibility><br />
  <w:DoNotOptimizeForBrowser/><br />
  <m:mathPr><br />
   <m:mathFont m:val="Cambria Math"/><br />
   <m:brkBin m:val="before"/><br />
   <m:brkBinSub m:val="&#45;-"/><br />
   <m:smallFrac m:val="off"/><br />
   <m:dispDef/><br />
   <m:lMargin m:val="0"/><br />
   <m:rMargin m:val="0"/><br />
   <m:defJc m:val="centerGroup"/><br />
   <m:wrapIndent m:val="1440"/><br />
   <m:intLim m:val="subSup"/><br />
   <m:naryLim m:val="undOvr"/><br />
  </m:mathPr></w:WordDocument><br />
</xml><![endif]--><!--[if gte mso 9]><xml><br />
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"<br />
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"<br />
  LatentStyleCount="267"><br />
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/><br />
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/><br />
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/><br />
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/><br />
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/><br />
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/><br />
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/><br />
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/><br />
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/><br />
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/><br />
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/><br />
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/><br />
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/><br />
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/><br />
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/><br />
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/><br />
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/><br />
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/><br />
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/><br />
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/><br />
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="Title"/><br />
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/><br />
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/><br />
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/><br />
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/><br />
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Table Grid"/><br />
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/><br />
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/><br />
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light Shading"/><br />
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light List"/><br />
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light Grid"/><br />
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Shading 1"/><br />
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Shading 2"/><br />
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium List 1"/><br />
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium List 2"/><br />
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 1"/><br />
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 2"/><br />
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 3"/><br />
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Dark List"/><br />
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful Shading"/><br />
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful List"/><br />
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful Grid"/><br />
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/><br />
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light List Accent 1"/><br />
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/><br />
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/><br />
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/><br />
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/><br />
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/><br />
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/><br />
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/><br />
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/><br />
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/><br />
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/><br />
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/><br />
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/><br />
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Dark List Accent 1"/><br />
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/><br />
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/><br />
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/><br />
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/><br />
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light List Accent 2"/><br />
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/><br />
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/><br />
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/><br />
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/><br />
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/><br />
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/><br />
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/><br />
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/><br />
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Dark List Accent 2"/><br />
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/><br />
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/><br />
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/><br />
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/><br />
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light List Accent 3"/><br />
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/><br />
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/><br />
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/><br />
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/><br />
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/><br />
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/><br />
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/><br />
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/><br />
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Dark List Accent 3"/><br />
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/><br />
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/><br />
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/><br />
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/><br />
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light List Accent 4"/><br />
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/><br />
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/><br />
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/><br />
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/><br />
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/><br />
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/><br />
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/><br />
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/><br />
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Dark List Accent 4"/><br />
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/><br />
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/><br />
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/><br />
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/><br />
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light List Accent 5"/><br />
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/><br />
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/><br />
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/><br />
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/><br />
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/><br />
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/><br />
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/><br />
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/><br />
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Dark List Accent 5"/><br />
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/><br />
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/><br />
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/><br />
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/><br />
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light List Accent 6"/><br />
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/><br />
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/><br />
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/><br />
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/><br />
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/><br />
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/><br />
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/><br />
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/><br />
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Dark List Accent 6"/><br />
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/><br />
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/><br />
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"<br />
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/><br />
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/><br />
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/><br />
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/><br />
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/><br />
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"<br />
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/><br />
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/><br />
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/><br />
 </w:LatentStyles><br />
</xml><![endif]--><!--[if gte mso 10]></p>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:普通表格;
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin-top:0cm;
	mso-para-margin-right:0cm;
	mso-para-margin-bottom:10.0pt;
	mso-para-margin-left:0cm;
	mso-pagination:widow-orphan;
	font-size:10.5pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-font-kerning:1.0pt;}
</style>
<p><![endif]-->
<p class="MsoNormal"><span lang="EN-US">ASE 15.7 新增了命令可以将数据库对象的所有权从一个所有者移交给另一个所有者。</span></p>
<p class="MsoNormal">比如将表customer的所有权从dbo移交给bill，使用命令： alter table dbo.customer modify owner bill</p>
<p class="MsoNormal">不仅仅限于表，还有其它数据库对象包括：视图、存储过程、用户定义函数、默认值、规则、自定义数据类型、加密密钥等；</p>
<p class="MsoNormal">一次性可以授予多个数据库对象：</p>
<p class="MsoNormal">1、将 bill 拥有的所有表的所有权都移交给 eric：<br />
	&nbsp;&nbsp;&nbsp; alter table bill.* modify owner eric preserve permissions</p>
<p>	2、将 bill 拥有的所有对象的所有权都移交给 eric：<br />
	&nbsp; &nbsp; alter all bill.* modify owner eric preserve permissions</p>
<p class="MsoNormal"><strong>preserve permissions</strong>：针对这些对象的所有显式授予或撤消的权限都将被保留，并且权限的 grantor 将更改为新的所有者。-------------------------------------------------------------------------------------------------------------------------------------------------------</p>
<p class="MsoNormal"><span style="color:#f00;">以下提供的方法适用于低于ASE 15.7的版本！<br />
	</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">和</span><span lang="EN-US">SQL Server</span><span style="font-family: 宋体;">很相似，</span><span lang="EN-US">Sybase ASE</span><span style="font-family: 宋体;">数据库有一些未认证的</span><span lang="EN-US">DBCC</span><span style="font-family: 宋体;">命令。日常的维护过程中，需要一些</span><span lang="EN-US">Sybase</span><span style="font-family: 宋体;">认证的、公开的</span><span lang="EN-US">DBCC</span><span style="font-family: 宋体;">命令来完成，比如：检查数据库或者表的一致性、物理存储分配一致性、重建索引等等。对于这些公开的</span><span lang="EN-US">DBCC</span><span style="font-family: 宋体;">命令，</span><span lang="EN-US">Sybase</span><span style="font-family: 宋体;">公司是提供技术支持保障的。那些未公开的也就是未认证的</span><span lang="EN-US">DBCC</span><span style="font-family: 宋体;">命令，仅限</span><span lang="EN-US">Sybase</span><span style="font-family: 宋体;">内部工程师使用；</span><span lang="EN-US">Sybase</span><span style="font-family: 宋体;">公司不提供技术支持也不会对于此产生的问题负责。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">所以，不要在生产环境上使用未认证的</span><span lang="EN-US">DBCC</span><span style="font-family: 宋体;">命令。在测试环境上研究学习使用倒是可以的。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;"><strong>需要记住的是</strong>：<strong><span style="color: rgb(255, 0, 0);">没人对这些未认证的</span></strong></span><strong><span style="color: rgb(255, 0, 0);"><span lang="EN-US">DBCC</span><span style="font-family: 宋体;">产后的后果负责。</span></span></strong></p>
<p class="MsoNormal"><span style="font-family: 宋体;">本篇介绍一个用来关闭或者重启某个用户数据库的未认证</span><span lang="EN-US">DBCC</span><span style="font-family: 宋体;">命令：</span><span lang="EN-US">dbcc dbreboot</span><span style="font-family: 宋体;">。顺便介绍一个修改对象所有者的方法。因为在</span><span lang="EN-US">ASE</span><span style="font-family: 宋体;">中对象的所有权是不能移交的，其它用户只有使用权。这点和中国土地权方面很类似吗？美国人信奉私有制，怎么设计出来这个数据库实现思路？呵呵，有点扯远了</span><span lang="EN-US">~~~</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">这边的测试环境是</span><span lang="EN-US">ASE15.0.3</span><span style="font-family: 宋体;">，我不确定从哪个</span><span lang="EN-US">ASE</span><span style="font-family: 宋体;">版本开始支持这个</span><span lang="EN-US">dbcc dbreboot</span><span style="font-family: 宋体;">命令的。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">首先用</span><span lang="EN-US">isql</span><span style="font-family: 宋体;">连接到</span><span lang="EN-US">ASE15.0.3</span><span style="font-family: 宋体;">数据库，先打开在屏幕显示输出信息的选项，</span></p>
<blockquote>
<p class="MsoNormal"><span lang="EN-US">dbcc traceon(3604)</span></p>
<p class="MsoNormal"><span lang="EN-US">go</span></p>
</blockquote>
<p class="MsoNormal"><span style="font-family: 宋体;">先来查看一下</span><span lang="EN-US">dbcc dbreboot</span><span style="font-family: 宋体;">的用法：<span id="more-632"></span></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">执行</span><span lang="EN-US">dbcc help(dbreboot)</span><span style="font-family: 宋体;">可以查看使用方法</span></p>
<blockquote>
<p class="MsoNormal"><span lang="EN-US">1&gt; dbcc help(dbreboot)</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt; go</span></p>
<p class="MsoNormal"><span lang="EN-US">dbreboot (report | reboot | reboot_norecovery | shutdown | shutdown_load |</span></p>
<p class="MsoNormal"><span lang="EN-US">restart | restart_norecovery, &lt;dbname1&gt; [, &lt;dbname2&gt; ...])</span></p>
</blockquote>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span><span style="font-family: 宋体;">通过上面的使用方法，可以看到</span><span lang="EN-US">dbreboot</span><span style="font-family: 宋体;">命令只有两个参数：</span></p>
<p class="MsoNormal"><span lang="EN-US">1</span><span style="font-family: 宋体;">：可操作的类型：</span><span lang="EN-US">reboot</span><span style="font-family: 宋体;">，</span><span lang="EN-US">shutdown</span><span style="font-family: 宋体;">，</span><span lang="EN-US">restart</span><span style="font-family: 宋体;">等</span></p>
<p class="MsoNormal"><span lang="EN-US">2</span><span style="font-family: 宋体;">：被操作的用户数据库的名称，不支持数据库</span><span lang="EN-US">ID</span><span style="font-family: 宋体;">，也不支持系统数据库</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">先来查看一下用户数据库</span><span lang="EN-US">ddb</span><span style="font-family: 宋体;">下面都有哪些用户和对象</span></p>
<blockquote>
<p class="MsoNormal"><span lang="EN-US">1&gt;use ddb</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt;go</span></p>
<p class="MsoNormal"><span lang="EN-US">1&gt;select uid,name from sysusers where uid &lt; 1000 order by uid</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt;go</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;</span>uid<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>name</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;</span>----------- ------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0 public</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1 dbo</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>3 patrol</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>5 rep</span></p>
<p class="MsoNormal"><span lang="EN-US">(4 rows affected)</span></p>
</blockquote>
<p class="MsoNormal"><span style="font-family: 宋体;">数据库</span><span lang="EN-US">ddb</span><span style="font-family: 宋体;">内有两个非系统用户：</span><span lang="EN-US">patrol</span><span style="font-family: 宋体;">和</span><span lang="EN-US">rep</span></p>
<blockquote>
<p class="MsoNormal"><span lang="EN-US">1&gt;select uid,count(*) from sysobjects</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt;group by uid</span></p>
<p class="MsoNormal"><span lang="EN-US">3&gt;order by uid</span></p>
<p class="MsoNormal"><span lang="EN-US">4&gt;go</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;</span>uid</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;</span>----------- -----------</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>43</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>5<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>56</span></p>
<p class="MsoNormal"><span lang="EN-US">(2 rows affected)</span></p>
</blockquote>
<p class="MsoNormal"><span style="font-family: 宋体;">用户</span><span lang="EN-US">dbo</span><span style="font-family: 宋体;">拥有</span><span lang="EN-US">43</span><span style="font-family: 宋体;">个对象，另外</span><span lang="EN-US">56</span><span style="font-family: 宋体;">个对象归用户</span><span lang="EN-US">rep</span><span style="font-family: 宋体;">所属。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">下面开始将用户</span><span lang="EN-US">rep</span><span style="font-family: 宋体;">拥有的</span><span lang="EN-US">56</span><span style="font-family: 宋体;">个对象&ldquo;移交&rdquo;给其它的用户：</span><span lang="EN-US">patrol</span><span style="font-family: 宋体;">，这里移交的意思就是将对象的所有权转移给其它用户</span><span lang="EN-US">patrol</span><span style="font-family: 宋体;">。</span><span lang="EN-US">Sybase ASE</span><span style="font-family: 宋体;">中是不支持这么做的。官方的推荐的做法就是重建用户表及其它对象。我这里提供的方法是&ldquo;非官方&rdquo;的，或许会存在问题，不过我在多次测试后没发现问题。建议大家在测试开发环境上可以这么做。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">但是，我感觉这个方法是可行的。在文章后面我将给出验证方法。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">启用服务器选项&ldquo;</span><span lang="EN-US">allow updates to system tables</span><span style="font-family: 宋体;">&rdquo;来允许修改系统表，在用户事务内修改表数据来回退错误的操作步骤。</span></p>
<blockquote>
<p class="MsoNormal"><span lang="EN-US">1&gt;begin tran</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt;go</span></p>
<p class="MsoNormal"><span lang="EN-US">1&gt;update sysobjects</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt;set uid = 3</span></p>
<p class="MsoNormal"><span lang="EN-US">3&gt;where uid = 5</span></p>
<p class="MsoNormal"><span lang="EN-US">4&gt;go</span></p>
<p class="MsoNormal"><span lang="EN-US">(56 rows affected)</span></p>
<p class="MsoNormal"><span lang="EN-US">1&gt;commit</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt;go</span></p>
</blockquote>
<p class="MsoNormal"><span style="font-family: 宋体;">以上就将系统表</span><span lang="EN-US">sysobjects</span><span style="font-family: 宋体;">中记录对象拥有者</span><span lang="EN-US">uid</span><span style="font-family: 宋体;">的信息由</span><span lang="EN-US">rep</span><span style="font-family: 宋体;">改成了</span><span lang="EN-US">patrol</span><span style="font-family: 宋体;">。内存中的元数据信息是没有办法改的，如果马上进行查询数据库的操作会报错的，也就是说</span><span lang="EN-US">ASE</span><span style="font-family: 宋体;">服务器还是&ldquo;固执&rdquo;认为被修改所属者的那些表还是属于原来所有者的。如果让</span><span lang="EN-US">ASE</span><span style="font-family: 宋体;">认为被修改的这些表属于</span><span lang="EN-US">patrol</span><span style="font-family: 宋体;">而不是原来的</span><span lang="EN-US">rep</span><span style="font-family: 宋体;">了，方法是重新装载元数据信息。以前的</span><span lang="EN-US">ASE</span><span style="font-family: 宋体;">版本中可以通过重启</span><span lang="EN-US">ASE</span><span style="font-family: 宋体;">服务器，现在我们可以用</span><span lang="EN-US">dbcc dbreboot</span><span style="font-family: 宋体;">命令来重启某个用户数据库，而不是所有的库了。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">执行</span><span lang="EN-US">dbcc dbreboot(&ldquo;reboot&rdquo;,ddb)</span><span style="font-family: 宋体;">，</span><span lang="EN-US">shutdown</span><span style="font-family: 宋体;">是个系统关键字，需要加双引号。</span></p>
<p class="MsoNormal"><span lang="EN-US">1&gt;dbcc dbreboot(&quot;reboot&quot;,ddb)</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt;go</span></p>
<p class="MsoNormal"><span lang="EN-US">---------- Shutting Down Database &#39;ddb&#39; ----------</span></p>
<p class="MsoNormal"><span lang="EN-US">Msg 2202, Level 16, State 1:</span></p>
<p class="MsoNormal"><span lang="EN-US">Server &#39;TEST&#39;, Line 1:</span></p>
<p class="MsoNormal"><span lang="EN-US">You cannot start database shutdown from the database to be shut down.</span></p>
<p class="MsoNormal"><span lang="EN-US">---------- Operation on Database &#39;ddb&#39; Failed ----------</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">必须在</span><span lang="EN-US">master</span><span style="font-family: 宋体;">数据库内部执行这个命令：</span><span lang="EN-US">dbcc dbreboot(&quot;reboot&quot;,ddb)</span></p>
<blockquote>
<p class="MsoNormal"><span lang="EN-US">1&gt;use master</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt;go</span></p>
<p class="MsoNormal"><span lang="EN-US">1&gt;dbcc dbreboot(&quot;reboot&quot;,ddb)</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt;go</span></p>
<p class="MsoNormal"><span lang="EN-US">---------- Shutting Down Database &#39;ddb&#39; ----------</span></p>
<p class="MsoNormal"><span lang="EN-US">---------- Re-starting Database &#39;ddb&#39; With Recovery ----------</span></p>
<p class="MsoNormal"><span lang="EN-US">Recovering database &#39;ddb&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">Started estimating recovery log boundaries for database &#39;ddb&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">Database &#39;ddb&#39;, checkpoint=(26118, 15), first=(26118, 15), last=(26125, 13).</span></p>
<p class="MsoNormal"><span lang="EN-US">Completed estimating recovery log boundaries for database &#39;ddb&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">Started ANALYSIS pass for database &#39;ddb&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">Completed ANALYSIS pass for database &#39;ddb&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">Started REDO pass for database &#39;ddb&#39;. The total number of log records to process</span></p>
<p class="MsoNormal"><span lang="EN-US">is 237.</span></p>
<p class="MsoNormal"><span lang="EN-US">Redo pass of recovery has processed 1 committed and 2 aborted transactions.</span></p>
<p class="MsoNormal"><span lang="EN-US">Completed REDO pass for database &#39;ddb&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">Recovery of database &#39;ddb&#39; will undo incomplete nested top actions.</span></p>
<p class="MsoNormal"><span lang="EN-US">Started filling free space info for database &#39;ddb&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">Completed filling free space info for database &#39;ddb&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">Started cleaning up the default data cache for database &#39;ddb&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">Completed cleaning up the default data cache for database &#39;ddb&#39;.</span></p>
<p class="MsoNormal"><span lang="EN-US">Recovery complete.</span></p>
<p class="MsoNormal"><span lang="EN-US">Database &#39;ddb&#39; is now online.</span></p>
<p class="MsoNormal"><span lang="EN-US">---------- Operation on Database &#39;ddb&#39; Completed Successfully ----------</span></p>
</blockquote>
<p class="MsoNormal"><span style="font-family: 宋体;">现在，</span><span lang="EN-US">rep</span><span style="font-family: 宋体;">拥有的</span><span lang="EN-US">56</span><span style="font-family: 宋体;">个对象现在属于</span><span lang="EN-US">patrol</span><span style="font-family: 宋体;">用户了。开始验证一下吧。</span></p>
<blockquote>
<p class="MsoNormal"><span lang="EN-US">1&gt;use ddb</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt;go</span></p>
<p class="MsoNormal"><span lang="EN-US">1&gt;select uid,count(*) from sysobjects</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt;group by uid</span></p>
<p class="MsoNormal"><span lang="EN-US">3&gt;go</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;</span>uid</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;</span>----------- -----------</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>43</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>3<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>56</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">(2 rows affected)</span></p>
</blockquote>
<p class="MsoNormal"><span lang="EN-US">sysobjects</span><span style="font-family: 宋体;">表中</span><span lang="EN-US">uid</span><span style="font-family: 宋体;">由</span><span lang="EN-US">5</span><span style="font-family: 宋体;">变成</span><span lang="EN-US">3</span><span style="font-family: 宋体;">了。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">随便找两个表测试一下，</span></p>
<blockquote>
<p class="MsoNormal"><span lang="EN-US">1&gt;select top 2 id,user_name(uid) as username,name<span style="">&nbsp; </span>from sysobjects</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt;where type=&#39;U&#39; and uid = 3</span></p>
<p class="MsoNormal"><span lang="EN-US">3&gt;go</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;</span>id<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>username</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>name</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;</span>----------- ------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>---------------------------------------------------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">------------------------------------------------------------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US">------------------------</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp; </span>1392004959 patrol</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>config</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp; </span>912003249 patrol</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>conn_properties</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">(2 rows affected)</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">1&gt;select count(*) from <b style="">patrol.config</b></span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt;go</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;</span>-----------</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>25</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">(1 row affected)</span></p>
<p class="MsoNormal"><span lang="EN-US">1&gt;select count(*) from <b style="">patrol.conn_properties</b></span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt;go</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;</span>-----------</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">(1 row affected)</span></p>
</blockquote>
<p class="MsoNormal"><span style="font-family: 宋体;">查询这两个表的数据是正常的。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">切换到用</span><span lang="EN-US">patrol</span><span style="font-family: 宋体;">用户登录，</span></p>
<blockquote>
<p class="MsoNormal"><span lang="EN-US">C:\Documents and Settings\Administrator&gt;isql -U<b style="">patrol</b> -Psybase -Stest</span></p>
<p class="MsoNormal"><span lang="EN-US">1&gt; use ddb</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt; go</span></p>
<p class="MsoNormal"><span lang="EN-US">1&gt; select count(*) from config</span></p>
<p class="MsoNormal"><span lang="EN-US">2&gt; go</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;</span>-----------</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>25</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">(1 row affected)</span></p>
</blockquote>
<p class="MsoNormal"><span style="font-family: 宋体;">同样没有问题。再来验证一下，依赖用户表的</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">在用户表</span><span lang="EN-US">config</span><span style="font-family: 宋体;">上点右键，属性</span></p>
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US" style=""><a href="https://www.dbainfo.net/wp-content/uploads/2010/12/view-table-properties.jpg" class="highslide-image" onclick="return hs.expand(this);"><img alt="" src="https://www.dbainfo.net/wp-content/uploads/2010/12/view-table-properties.jpg" /></a><br />
	</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">点</span> <b style=""><span style="font-family: 宋体;">依赖性</span></b> <span style="font-family: 宋体;">按钮，</span></p>
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US" style=""><br />
	</span></p>
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US" style=""><img alt="" height="331" src="https://www.dbainfo.net/wp-content/uploads/2010/12/view-table-properties-references.jpg" width="324" /></span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">可以看到一些存储过程依赖用户表</span><span lang="EN-US">config</span><span style="font-family: 宋体;">，没有什么问题。</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">查看依赖表</span><span lang="EN-US">config</span><span style="font-family: 宋体;">的其它对象用如下的</span><span lang="EN-US">SQL</span><span style="font-family: 宋体;">语句：</span></p>
<blockquote>
<p class="MsoNormal"><strong><span lang="EN-US">select U.name as username ,O.name as object_name, O.type as object_type</span></strong></p>
<p>&nbsp;</p>
<p class="MsoNormal"><strong><span lang="EN-US">from dbo.sysdepends D, dbo.sysobjects O, dbo.sysusers U </span></strong></p>
<p>&nbsp;</p>
<p class="MsoNormal"><strong><span lang="EN-US">where O.uid = U.uid and O.id = D.id and D.depid = object_id(&#39;patrol.config&#39;)</span></strong></p>
<p>&nbsp;</p>
<p class="MsoNormal"><strong><span lang="EN-US">--and O.type = &#39;P&#39;</span></strong></p>
</blockquote>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">查看自定义数据类型被引用的情况：</span></p>
<blockquote>
<p class="MsoNormal"><strong><span lang="EN-US">select user_name(T.uid) as datatype_owner,T.name as datatype_name, U.name as user_name,O.name as object_name,C.name as column_name ,O.type as object_type</span></strong></p>
<p>&nbsp;</p>
<p class="MsoNormal"><strong><span lang="EN-US">from dbo.systypes T, dbo.sysusers U, dbo.syscolumns C, dbo.systypes P,dbo.sysobjects O</span></strong></p>
<p>&nbsp;</p>
<p class="MsoNormal"><strong><span lang="EN-US">where T.uid = U.uid and T.usertype = C.usertype and C.id = O.id </span></strong></p>
<p>&nbsp;</p>
<p class="MsoNormal"><strong><span lang="EN-US">and T.usertype &gt;= 100 and T.type = P.type </span></strong></p>
<p>&nbsp;</p>
<p class="MsoNormal"><strong><span lang="EN-US">and P.usertype = (select min(usertype) from ddb.dbo.systypes where type = T.type )</span></strong></p>
</blockquote>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">后面还有一些工作要做，使用下面的</span><span lang="EN-US">SQL</span><span style="font-family: 宋体;">语句查看数据库</span><span lang="EN-US">ddb</span><span style="font-family: 宋体;">内部有哪些表有</span><span lang="EN-US">uid</span><span style="font-family: 宋体;">这一列。下面的思路可能有点片面，但是，我感觉</span><span lang="EN-US">Sybase ASE</span><span style="font-family: 宋体;">内与用户编号相关的应该用</span><span lang="EN-US">uid</span><span style="font-family: 宋体;">这个列名吧？</span></p>
<blockquote>
<p class="MsoNormal"><span style="color: rgb(255, 0, 0);"><strong><span lang="EN-US">select object_name(c.id) as object_name, o.type</span></strong></span></p>
<p class="MsoNormal"><span style="color: rgb(255, 0, 0);"><strong><span lang="EN-US">from dbo.syscolumns c,dbo.sysobjects o</span></strong></span></p>
<p class="MsoNormal"><span style="color: rgb(255, 0, 0);"><strong><span lang="EN-US">where&nbsp; c.id = o.id and c.name=&#39;uid&#39;</span></strong></span></p>
<p class="MsoNormal"><span style="color: rgb(255, 0, 0);"><strong><span lang="EN-US">&nbsp;go</span></strong></span></p>
</blockquote>
<p class="MsoNormal" style="text-align: center;"><span lang="EN-US" style=""><img alt="" height="300" src="https://www.dbainfo.net/wp-content/uploads/2010/12/dbcc-dbreboot-undocumented-command1.jpg" width="336" /><br />
	</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">与</span><span lang="EN-US">uid</span><span style="font-family: 宋体;">相关的对象有</span><span lang="EN-US">8</span><span style="font-family: 宋体;">个，排除最后一个视图：</span><span lang="EN-US">sysquerymetrics</span><span style="font-family: 宋体;">，需要处理其余</span><span lang="EN-US">7</span><span style="font-family: 宋体;">个系统表。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">在我们的这个例子中，&ldquo;移交&rdquo;对象的所有权不涉及到修改用户表</span><span lang="EN-US">sysusers</span><span style="font-family: 宋体;">数据的情况，对象信息表</span><span lang="EN-US">sysobjects</span><span style="font-family: 宋体;">在上面已经修改过了，在</span><span lang="EN-US">ASE15.0.3</span><span style="font-family: 宋体;">文档中</span><span lang="EN-US">sysencryptkeys</span><span style="font-family: 宋体;">被解释为留作将来使用，</span><span lang="EN-US">sysusermessages</span><span style="font-family: 宋体;">用来存储用户自定义消息，</span><span lang="EN-US">sysqueryplans</span><span style="font-family: 宋体;">用来存储抽象查询计划，</span><span lang="EN-US">sysquerymetrics</span><span style="font-family: 宋体;">用来存储性能监控指标，这三张表（</span><span lang="EN-US">sysusermessages</span><span style="font-family: 宋体;">、</span><span lang="EN-US">sysqueryplans</span><span style="font-family: 宋体;">、</span><span lang="EN-US">sysquerymetrics</span><span style="font-family: 宋体;">）都都没有数据。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">最后只剩下两张系统表：</span><span lang="EN-US">systype</span><span style="font-family: 宋体;">、</span><span lang="EN-US">sysprotects</span><span style="font-family: 宋体;">需要进一步处理。</span></p>
<blockquote>
<p class="MsoNormal"><strong><span lang="EN-US">select uid,usertype,name from dbo.systypes</span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US">where uid = 5</span></strong></p>
<p class="MsoNormal"><strong><span lang="EN-US">go</span><br />
		</strong></p>
</blockquote>
<p class="MsoNormal"><span style="font-family: 宋体;">发现系统表</span><span lang="EN-US">systypes</span><span style="font-family: 宋体;">存储了用户</span><span lang="EN-US">rep</span><span style="font-family: 宋体;">自定义的数据类型，</span></p>
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US" style=""><img alt="" height="258" src="https://www.dbainfo.net/wp-content/uploads/2010/12/view-table-properties-references2.jpg" width="333" /><br />
	</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">仿照前面修改</span><span lang="EN-US">sysobjects</span><span style="font-family: 宋体;">中</span><span lang="EN-US">uid</span><span style="font-family: 宋体;">相似的方法，改成</span><span lang="EN-US">systypes</span><span style="font-family: 宋体;">存储的</span><span lang="EN-US">rep</span><span style="font-family: 宋体;">创建的数据类型归</span><span lang="EN-US">patrol</span><span style="font-family: 宋体;">拥有。</span></p>
<blockquote>
<p class="MsoNormal"><span lang="EN-US">use ddb</span></p>
<p class="MsoNormal"><span lang="EN-US">go</span></p>
<p class="MsoNormal"><span lang="EN-US">begin tran</span></p>
<p class="MsoNormal"><span lang="EN-US">go</span></p>
<p class="MsoNormal"><span lang="EN-US">update systypes</span></p>
<p class="MsoNormal"><span lang="EN-US">set uid = 3</span></p>
<p class="MsoNormal"><span lang="EN-US">where uid = 5</span></p>
<p class="MsoNormal"><span lang="EN-US">go</span></p>
<p class="MsoNormal"><span lang="EN-US">commit</span></p>
<p class="MsoNormal"><span lang="EN-US">go</span></p>
</blockquote>
<p class="MsoNormal"><span style="font-family: 宋体;">这样，</span><span lang="EN-US">rep</span><span style="font-family: 宋体;">自定义的数据类型就归</span><span lang="EN-US">patrol</span><span style="font-family: 宋体;">用户所有了。</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">下面查看关于</span><span lang="EN-US">sysproctects</span><span style="font-family: 宋体;">系统表的信息，这个表主要存储为用户、组和角色授予或撤消的权限的信息。</span></p>
<blockquote>
<p class="MsoNormal"><span lang="EN-US">select * from sysprotects</span></p>
<p class="MsoNormal"><span lang="EN-US">where uid = 5 or grantor = 5</span></p>
<p class="MsoNormal"><span lang="EN-US">go</span></p>
</blockquote>
<p align="center" class="MsoNormal" style="text-align: center;"><span lang="EN-US" style=""><img alt="" src="https://www.dbainfo.net/wp-content/uploads/2010/12/view-table-properties-references3.jpg" /><br />
	</span></p>
<p class="MsoNormal"><span lang="EN-US">grantor</span><span style="font-family: 宋体;">列表示授予者的意思。其实只要将授予者由原来的</span><span lang="EN-US">rep</span><span style="font-family: 宋体;">改成现在的</span><span lang="EN-US">patrol</span><span style="font-family: 宋体;">即可，既然以前</span><span lang="EN-US">rep</span><span style="font-family: 宋体;">没有授予给其他用户权限，那么此处不需要进行修改了。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">最后总结一下，在</span><span lang="EN-US">ASE15.0.3</span><span style="font-family: 宋体;">版本中，估计其它的</span><span lang="EN-US">ASE15.x</span><span style="font-family: 宋体;">也是大同小异，移交用户的所有权需要修改</span><span lang="EN-US">7</span><span style="font-family: 宋体;">个系统表的数据。在我的测试环境中仅修改了</span><span lang="EN-US">2</span><span style="font-family: 宋体;">个系统表（</span><span lang="EN-US">sysobjects</span><span style="font-family: 宋体;">和</span><span lang="EN-US">systypes</span><span style="font-family: 宋体;">）。这</span><span lang="EN-US">7</span><span style="font-family: 宋体;">个系统表是：</span><span lang="EN-US">sysobjects,systypes,sysusers,sysqueryplans,sysquerymetrics,sysprotects, sysencryptkeys</span><span style="font-family: 宋体;">。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">批量修改一遍就行了，</span></p>
<p class="MsoNormal"><span lang="EN-US">update sysobjects set uid = 3<span style="">&nbsp; </span>where uid = 5</span></p>
<p class="MsoNormal"><span lang="EN-US">update systypes set uid = 3<span style="">&nbsp; </span>where uid = 5</span></p>
<p class="MsoNormal"><span lang="EN-US">update sysusers set uid = 3<span style="">&nbsp; </span>where uid = 5</span></p>
<p class="MsoNormal"><span lang="EN-US">update sysqueryplans set uid = 3<span style="">&nbsp; </span>where uid = 5</span></p>
<p class="MsoNormal"><span lang="EN-US">update sysquerymetrics set uid = 3<span style="">&nbsp; </span>where uid = 5</span></p>
<p class="MsoNormal"><span lang="EN-US">update sysprotects set uid = 3<span style="">&nbsp; </span>where uid = 5</span></p>
<p class="MsoNormal"><s><span lang="EN-US">update sysencryptkeys set uid = 3<span style="">&nbsp; </span>where uid = 5</span></s><span style="font-family: 宋体;">这个暂时不需要!</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">最后重启</span><span lang="EN-US">ASE</span><span style="font-family: 宋体;">数据库服务器或者只重启修改的那个用户数据库就可以了。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体;">有什么不妥当的地方，欢迎指正！</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<div style="clear: both; margin: 10px 0pt; border: 1px dashed rgb(153, 153, 153); font-size: 12px; padding: 5px 10px;">
<li>本文链接地址：<a href="https://www.dbainfo.net/one-undocument-dbcc-command-handover-table-ownership.htm">https://www.dbainfo.net/one-undocument-dbcc-command-handover-table-ownership.htm</a>；</li>
<li>本文为dbainfo个人原创，请在尊重作者劳动成果的前提下进行转载；</li>
<li>转载务必注明原始出处 : <a href="https://www.dbainfo.net/">Sybase数据库技术，数据库恢复专家</a>；</li>
<li>对《<a href="https://www.dbainfo.net/one-undocument-dbcc-command-handover-table-ownership.htm">使用重启数据库的未认证DBCC命令来移交表的所有权</a>》有何疑问或见解，请在本文下方发表；</li>
<li>对网站还有其他问题或建议，请提交在<a href="https://www.dbainfo.net/messages" target="_blank">留言板</a>，谢谢！</li>
</div>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2013-09-05 -- <a href="https://www.dbainfo.net/find-not-grant-privilege-tables.htm" title="查找没有授予给其它用户权限的表以及权限">查找没有授予给其它用户权限的表以及权限</a> (0)</li><li>2012-09-26 -- <a href="https://www.dbainfo.net/config_dbccdb.htm" title="dbcc配置过程">dbcc配置过程</a> (0)</li><li>2010-08-23 -- <a href="https://www.dbainfo.net/direct-modify-sqlserver-data-page-by-dbcc-writepage.htm" title="利用dbcc writepage命令修改SQL SQLSERVER中的物理页面上的内容">利用dbcc writepage命令修改SQL SQLSERVER中的物理页面上的内容</a> (3)</li><li>2010-02-23 -- <a href="https://www.dbainfo.net/sybase-ase-flashback-table-to-before-drop-table.htm" title="成功恢复drop table的表内数据">成功恢复drop table的表内数据</a> (3)</li><li>2009-11-18 -- <a href="https://www.dbainfo.net/sql-server-dbcc-synta.htm" title="SQL SERVER DBCC命令解释">SQL SERVER DBCC命令解释</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>https://www.dbainfo.net/one-undocument-dbcc-command-handover-table-ownership.htm/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>利用dbcc writepage命令修改SQL SQLSERVER中的物理页面上的内容</title>
		<link>https://www.dbainfo.net/direct-modify-sqlserver-data-page-by-dbcc-writepage.htm</link>
		<comments>https://www.dbainfo.net/direct-modify-sqlserver-data-page-by-dbcc-writepage.htm#comments</comments>
		<pubDate>Mon, 23 Aug 2010 10:07:55 +0000</pubDate>
		<dc:creator>dbainfo</dc:creator>
				<category><![CDATA[SQL SERVER]]></category>
		<category><![CDATA[DBCC]]></category>
		<category><![CDATA[dbcc writepage]]></category>
		<category><![CDATA[sqlserver]]></category>

		<guid isPermaLink="false">http://www.dbainfo.net/?p=803</guid>
		<description><![CDATA[dbcc writepage是sqlserver 2000 和 2005中未公开的命令，也就是说使用这些未官方支持的命令出现的任何后果与MS无关。 同样，本文仅仅演示dbcc writepage的使用，您在操作时出现的任何后果与本人无关。 dbcc writepage的语法为： 　　　dbcc writepage ({ dbid, &#8216;dbname&#8217; }, fileid, pageid, offset, length, data) 下面演示dbcc writepage的使用方法： ---------------------------------------------------------------------------- 第一步：创建一个测试表 1&#62; create table test (id int not null,name varchar(30) null) 2&#62; go 1&#62; insert into test 2&#62; select 1,&#39;china&#39; 3&#62; go (1 行受影响) 1&#62; insert into test 2&#62; select 2,&#39;beijing&#39; 3&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>dbcc writepage是sqlserver 2000 和 2005中未公开的命令，也就是说使用这些未官方支持的命令出现的任何后果与MS无关。</p>
<p>同样，本文仅仅演示dbcc writepage的使用，您在操作时出现的任何后果与本人无关。</p>
<p>dbcc writepage的语法为：</p>
<p>　　　dbcc writepage ({ dbid, &lsquo;dbname&rsquo; }, fileid, pageid, offset, length, data)</p>
<p>下面演示dbcc writepage的使用方法：</p>
<p>----------------------------------------------------------------------------</p>
<p><span style="font-size: medium;"><strong>第一步：创建一个测试表</strong> </span></p>
<p>1&gt; create table test (id int not null,name varchar(30) null)<br />
	2&gt; go<br />
	1&gt; insert into test<br />
	2&gt; select 1,&#39;china&#39;<br />
	3&gt; go</p>
<p>	(1 行受影响)<br />
	1&gt; insert into test<br />
	2&gt; select 2,&#39;beijing&#39;<br />
	3&gt; go</p>
<p>	(1 行受影响)</p>
<p>&nbsp;</p>
<p>1&gt; select object_id(&#39;test&#39;)<br />
	2&gt; go</p>
<p>	-----------<br />
	&nbsp;1877581727</p>
<p>	(1 行受影响)</p>
<p>
	表的ID为： 1877581727。</p>
<p><span style="font-size: medium;"><strong><br />
	</strong> </span></p>
<p><span style="font-size: medium;"><strong>第二步：查看表内数据所在的页面号</strong> </span></p>
<p>1&gt; select * from sysindexes<br />
	2&gt; where id = 1877581727<br />
	3&gt; go<br />
	id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; first&nbsp;&nbsp;&nbsp; indid&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp; minlen keycnt groupid dpages<br />
	&nbsp;&nbsp; reserved&nbsp;&nbsp;&nbsp; used&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rowcnt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rowmodctr&nbsp;&nbsp; reserved3 reserved4<br />
	xmaxlen maxirow OrigFillFactor StatVersion reserved2&nbsp;&nbsp; FirstIAM impid&nbsp; lockflags<br />
	&nbsp;pgmodctr&nbsp;&nbsp;&nbsp; keys<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name</p>
<p>	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; statblob</p>
<p>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxlen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rows<br />
	----------- ----------- -------- ------ -------- ------ ------ ------- ---------<br />
	-- ----------- ----------- -------------------- ----------- --------- ---------<br />
	------- ------- -------------- ----------- ----------- -------- ------ ---------<br />
	&nbsp;----------- -------------------------------------------------------------------<br />
	--------------------------------------------------------------------------------<br />
	--------------------------------------------------------------------------------<br />
	--------------------------------------------------------------------------------<br />
	--------------------------------------------------------------------------------<br />
	--------------------------------------------------------------------------------<br />
	--------------------------------------------------------------------------------<br />
	--------------------------------------------------------------------------------<br />
	--------------------------------------------------------------------------------<br />
	--------------------------------------------------------------------------------<br />
	--------------------------------------------------------------------------------<br />
	--------------------------------------------------------------------------------<br />
	--------------------------------------------------------------------------------<br />
	--------------------------------------------------------------- ----------------<br />
	--------------------------------------------------------------------------------<br />
	-------------------------------- -----------------------------------------------<br />
	--------------------------------------------------------------------------------<br />
	--------------------------------------------------------------------------------<br />
	--------------------------------------------------- ----------- -----------<br />
	&nbsp;1877581727&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 <span style="color: rgb(255, 0, 0);">0x3B4F00</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 0x000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<br />
	&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
	&nbsp;&nbsp;&nbsp;&nbsp; 57&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 0x3C4F00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 NULL<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL</p>
<p>	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL</p>
<p>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2</p>
<p>	(1 行受影响)</p>
<p><strong><br />
	查询属于test表的第一个数据页的页号，在sysindexes表中first列表示对象的第一个物理存储页的页号：0x384F00，也就是页号（1：20283）。</strong></p>
<p>&nbsp;</p>
<p><strong><span style="font-size: medium;">第三步：查询修改前的数据内容</span> </strong></p>
<p>下面查询修改前页面（1，20283）上的数据内容。可以看出（1，20283）页上有2行记录，这和插入的2行记录数保持一致。然后，观察到页面的头部有china和beijing的字样，</p>
<p>这和插入的2行记录内容&ldquo;似乎&rdquo;一致。</p>
<p><strong><br />
	</strong></p>
<p><strong>下面我用红色标记了test表中两行测试数据的内容。1,&#39;china&#39;&nbsp;&nbsp;&nbsp; 2,&#39;beijing&#39;</strong></p>
<p>1&gt; dbcc page(9,1,20283,2)<br />
	2&gt; go</p>
<p>	DATA:<br />
	Memory Dump @0x518FC000</p>
<p>	518FC000:&nbsp;&nbsp; 01010400 00800001 00000000 00000800 ?................</p>
<p>	518FC010:&nbsp;&nbsp; 00000000 00000200 aa000000 721f8a00 ?............r...</p>
<p>	518FC020:&nbsp;&nbsp; 3b4f0000 01000000 92010000 75000000 ?;O..........u...</p>
<p>	518FC030:&nbsp;&nbsp; 02000000 00000000 00000000 00000000 ?................</p>
<p>	518FC040:&nbsp;&nbsp; 01000000 00000000 00000000 00000000 ?................</p>
<p>	518FC050:&nbsp;&nbsp; 00000000 00000000 00000000 00000000 ?................</p>
<p>	518FC060:&nbsp;&nbsp; 30000800 <span style="color: rgb(255, 0, 0);">01000000</span> 0200fc01 00140063 ?0..............<span style="color: rgb(255, 0, 0);">c</span> </p>
<p>	518FC070:&nbsp;&nbsp; 68696e61 30000800 <span style="color: rgb(255, 0, 0);">02000000</span> 0200fc01 ?<span style="color: rgb(255, 0, 0);">hina</span> 0...........</p>
<p>	518FC080:&nbsp;&nbsp; 00160062 65696a69 6e670000 21212121 ?...<span style="color: rgb(255, 0, 0);">beijing</span> ..!!!!</p>
<p>	518FC090:&nbsp;&nbsp; 21212121 21212121 21212121 21212121 ?!!!!!!!!!!!!!!!!</p>
<p>	518FC0A0:&nbsp;&nbsp; 21212121 21212121 21212121 21212121 ?!!!!!!!!!!!!!!!!</p>
<p>
	........... 这些是未分配使用的空间</p>
<p>
	518FDFC0:&nbsp;&nbsp; 21212121 21212121 21212121 21212121 ?!!!!!!!!!!!!!!!!</p>
<p>	518FDFD0:&nbsp;&nbsp; 21212121 21212121 21212121 21212121 ?!!!!!!!!!!!!!!!!</p>
<p>	518FDFE0:&nbsp;&nbsp; 21212121 21212121 21212121 21212121 ?!!!!!!!!!!!!!!!!</p>
<p>	518FDFF0:&nbsp;&nbsp; 21212121 21212121 21212121 74006000 ?!!!!!!!!!!!!t.`.</p>
<p>
	OFFSET TABLE:</p>
<p>
	Row - Offset</p>
<p>	1 (0x1) - 116 (0x74)</p>
<p>	0 (0x0) - 96 (0x60)</p>
<p>
	DBCC 执行完毕。如果 DBCC 输出了错误信息，请与系统管理员联系。</p>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong><span style="color: rgb(255, 0, 0);">第四步：修改物理数据页面的内容</span> </strong> </span></p>
<p>通过上面的dbcc page输出结果，仔细数了一下，china这列内容的偏移为111，将china这五个字符改成aaaa。这是最简单的。a的asicc为：97（0x61）。</p>
<p>1&gt; <span style="font-size: medium;"><strong><span style="color: rgb(255, 0, 0);">db</span> <span style="color: rgb(255, 0, 0);"><span style="color: rgb(255, 0, 0);">cc</span> writepage(9,1,20283,111,5,0x6161616161)</span> </strong> </span> <br />
	2&gt; <span style="font-size: medium;"><strong><span style="color: rgb(255, 0, 0);">go</span> </strong> </span> <br />
	DBCC 执行完毕。如果 DBCC 输出了错误信息，请与系统管理员联系。</p>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong><span style="color: rgb(255, 0, 0);">第五步：查看修改后的物理页面的内容</span> </strong> </span></p>
<p>1&gt; dbcc page(9,1,20283,2)<br />
	2&gt; go</p>
<p>	DATA:<br />
	Memory Dump @0x5002C000</p>
<p>	5002C000:&nbsp;&nbsp; 01010400 00820001 00000000 00000800 ?................</p>
<p>	5002C010:&nbsp;&nbsp; 00000000 00000200 aa000000 721f8a00 ?............r...</p>
<p>	5002C020:&nbsp;&nbsp; 3b4f0000 01000000 92010000 75000000 ?;O..........u...</p>
<p>	5002C030:&nbsp;&nbsp; 02000000 00000000 00000000 8234666e ?.............4fn</p>
<p>	5002C040:&nbsp;&nbsp; 00000000 00000000 00000000 00000000 ?................</p>
<p>	5002C050:&nbsp;&nbsp; 00000000 00000000 00000000 00000000 ?................</p>
<p>	5002C060:&nbsp;&nbsp; 30000800 <span style="color: rgb(255, 0, 0);">01000000</span> 0200fc01 00140061 ?0..............<span style="color: rgb(255, 0, 0);">a</span> </p>
<p>	5002C070:&nbsp;&nbsp; 61616161 30000800 <span style="color: rgb(255, 0, 0);">02000000</span> 0200fc01 ?<span style="color: rgb(255, 0, 0);">aaaa</span> 0...........</p>
<p>	5002C080:&nbsp;&nbsp; 00160062 65696a69 6e670000 21212121 ?...<span style="color: rgb(255, 0, 0);">beijing</span> ..!!!!</p>
<p>	5002C090:&nbsp;&nbsp; 21212121 21212121 21212121 21212121 ?!!!!!!!!!!!!!!!!</p>
<p>	5002C0A0:&nbsp;&nbsp; 21212121 21212121 21212121 21212121 ?!!!!!!!!!!!!!!!!</p>
<p>	5002C140:&nbsp;&nbsp; 21212121 21212121 21212121 21212121 ?!!!!!!!!!!!!!!!!</p>
<p>	5002C150:&nbsp;&nbsp; 21212121 21212121 21212121 21212121 ?!!!!!!!!!!!!!!!!</p>
<p>	..................省略未占用空间</p>
<p>
	5002DFE0:&nbsp;&nbsp; 21212121 21212121 21212121 21212121 ?!!!!!!!!!!!!!!!!</p>
<p>	5002DFF0:&nbsp;&nbsp; 21212121 21212121 21212121 74006000 ?!!!!!!!!!!!!t.`.</p>
<p>
	OFFSET TABLE:</p>
<p>
	Row - Offset</p>
<p>	1 (0x1) - 116 (0x74)</p>
<p>	0 (0x0) - 96 (0x60)</p>
<p>
	DBCC 执行完毕。如果 DBCC 输出了错误信息，请与系统管理员联系。</p>
<p>&nbsp;</p>
<p><span style="color: rgb(0, 0, 0);"><span style="font-size: medium;"><strong>第六步：通过客户端工具验证修改后的数据内容</strong> </span> </span></p>
<p>1&gt; select * from test<br />
	2&gt; go<br />
	id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name<br />
	----------- ------------------------------<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 aaaaa<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 beijing</p>
<p>	(2 行受影响)<br />
	可以看到第一行记录的name列由china改为了aaaaa</p>
<p><strong>备注：</strong> 以上演示的是仅仅修改某一行某一列的数据，并且修改后的内容和修改前的内容保持长度一致。</p>
<p>如果修改多列或者修改前后的字段长度不一致；进一步修改整行数据，或者修改整页的数据的话，可能会复杂许多。</p>
<p>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;-<br />
	&mdash;- 本文为andkylee个人原创，请在尊重作者劳动成果的前提下进行转载；<br />
	&mdash;- 转载务必注明原始出处 :<a href="../" target="_blank" title="http://www.dbainfo.net"> http://www.dbainfo.net</a><br />
	&mdash;- 关键字：dbcc writepage undocumented command 修改 物理页面 page <br />
	&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;-</p>
<div style="clear: both; margin: 10px 0pt; border: 1px dashed rgb(153, 153, 153); font-size: 12px; padding: 5px 10px;">
<li>本文链接地址：<a href="https://www.dbainfo.net/direct-modify-sqlserver-data-page-by-dbcc-writepage.htm">https://www.dbainfo.net/direct-modify-sqlserver-data-page-by-dbcc-writepage.htm</a>；</li>
<li>本文为dbainfo个人原创，请在尊重作者劳动成果的前提下进行转载；</li>
<li>转载务必注明原始出处 : <a href="https://www.dbainfo.net/">Sybase数据库技术，数据库恢复专家</a>；</li>
<li>对《<a href="https://www.dbainfo.net/direct-modify-sqlserver-data-page-by-dbcc-writepage.htm">利用dbcc writepage命令修改SQL SQLSERVER中的物理页面上的内容</a>》有何疑问或见解，请在本文下方发表；</li>
<li>对网站还有其他问题或建议，请提交在<a href="https://www.dbainfo.net/messages" target="_blank">留言板</a>，谢谢！</li>
</div>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2009-11-18 -- <a href="https://www.dbainfo.net/sql-server-dbcc-synta.htm" title="SQL SERVER DBCC命令解释">SQL SERVER DBCC命令解释</a> (0)</li><li>2019-04-11 -- <a href="https://www.dbainfo.net/sql-server-recovery-service.htm" title="SQL Server 数据库修复专家SQLRescue">SQL Server 数据库修复专家SQLRescue</a> (0)</li><li>2012-09-26 -- <a href="https://www.dbainfo.net/config_dbccdb.htm" title="dbcc配置过程">dbcc配置过程</a> (0)</li><li>2010-12-27 -- <a href="https://www.dbainfo.net/one-undocument-dbcc-command-handover-table-ownership.htm" title="使用重启数据库的未认证DBCC命令来移交表的所有权">使用重启数据库的未认证DBCC命令来移交表的所有权</a> (2)</li><li>2010-11-03 -- <a href="https://www.dbainfo.net/sql2005-direct-update-system-catalogs.htm" title="SQL2005 如何更新系统表">SQL2005 如何更新系统表</a> (2)</li><li>2010-09-28 -- <a href="https://www.dbainfo.net/sql-server-database-all-tables-space-order-desc2.htm" title="SQL SERVER中查看表占用空间的另外一种方法">SQL SERVER中查看表占用空间的另外一种方法</a> (0)</li><li>2010-09-16 -- <a href="https://www.dbainfo.net/java-connect-to-sqlserver-demo.htm" title="Java连接SQL Server数据库的一个简单例子">Java连接SQL Server数据库的一个简单例子</a> (0)</li><li>2010-09-15 -- <a href="https://www.dbainfo.net/sql-server-database-all-tables-space-order-desc.htm" title="统计SQL SERVER数据库内所有表占用空间并排序">统计SQL SERVER数据库内所有表占用空间并排序</a> (0)</li><li>2010-09-06 -- <a href="https://www.dbainfo.net/sql-server-linked-server-summary.htm" title="SQL Server的链接服务器技术小结[转]">SQL Server的链接服务器技术小结[转]</a> (0)</li><li>2010-08-29 -- <a href="https://www.dbainfo.net/access-sqlserver-from-oracle-by-transgate.htm" title="从oracle内访问sqlserver2005的数据时一个错误">从oracle内访问sqlserver2005的数据时一个错误</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>https://www.dbainfo.net/direct-modify-sqlserver-data-page-by-dbcc-writepage.htm/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>密码保护：成功恢复drop table的表内数据</title>
		<link>https://www.dbainfo.net/sybase-ase-flashback-table-to-before-drop-table.htm</link>
		<comments>https://www.dbainfo.net/sybase-ase-flashback-table-to-before-drop-table.htm#comments</comments>
		<pubDate>Tue, 23 Feb 2010 09:40:48 +0000</pubDate>
		<dc:creator>dbainfo</dc:creator>
				<category><![CDATA[Sybase ASE]]></category>
		<category><![CDATA[DBCC]]></category>
		<category><![CDATA[dbcc allocdump]]></category>
		<category><![CDATA[dbcc page]]></category>
		<category><![CDATA[dbcc pglinkage]]></category>
		<category><![CDATA[drop table]]></category>
		<category><![CDATA[truncate table]]></category>
		<category><![CDATA[恢复]]></category>
		<category><![CDATA[误操作]]></category>
		<category><![CDATA[非常规恢复]]></category>

		<guid isPermaLink="false">http://www.dbainfo.net/?p=144</guid>
		<description><![CDATA[无法提供摘要。这是一篇受保护的文章。]]></description>
			<content:encoded><![CDATA[<form action="https://www.dbainfo.net/wp-pass.php" method="post">
<p>这是一篇受密码保护的文章。您需要提供访问密码：</p>
<p><label for="pwbox-144">密码：<br />
<input name="post_password" id="pwbox-144" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="提交" /></p></form>
<div style="clear: both; margin: 10px 0pt; border: 1px dashed rgb(153, 153, 153); font-size: 12px; padding: 5px 10px;">
<li>本文链接地址：<a href="https://www.dbainfo.net/sybase-ase-flashback-table-to-before-drop-table.htm">https://www.dbainfo.net/sybase-ase-flashback-table-to-before-drop-table.htm</a>；</li>
<li>本文为dbainfo个人原创，请在尊重作者劳动成果的前提下进行转载；</li>
<li>转载务必注明原始出处 : <a href="https://www.dbainfo.net/">Sybase数据库技术，数据库恢复专家</a>；</li>
<li>对《<a href="https://www.dbainfo.net/sybase-ase-flashback-table-to-before-drop-table.htm">密码保护：成功恢复drop table的表内数据</a>》有何疑问或见解，请在本文下方发表；</li>
<li>对网站还有其他问题或建议，请提交在<a href="https://www.dbainfo.net/messages" target="_blank">留言板</a>，谢谢！</li>
</div>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2013-06-02 -- <a href="https://www.dbainfo.net/recovery-tools" title="Sybase数据库恢复工具">Sybase数据库恢复工具</a> (0)</li><li>2013-06-02 -- <a href="https://www.dbainfo.net/2120.htm" title=""></a> (0)</li><li>2010-02-25 -- <a href="https://www.dbainfo.net/mssqlserver-flashback-to-before-drop-table-by-logs.htm" title="MSSQLSERVER利用日志恢复drop table的表数据[转]">MSSQLSERVER利用日志恢复drop table的表数据[转]</a> (0)</li><li>2012-06-22 -- <a href="https://www.dbainfo.net/introduce-sql-anywhere-recovery-tool-readasadb.htm" title="Sybase SQL Anywhere(ASA)数据库非常规恢复工具">Sybase SQL Anywhere(ASA)数据库非常规恢复工具</a> (0)</li><li>2012-06-11 -- <a href="https://www.dbainfo.net/i-have-the-tool-can-recover-from-asa-db-file.htm" title="研发成功了从Sybase SQL Anywhere的DB文件上恢复数据的工具">研发成功了从Sybase SQL Anywhere的DB文件上恢复数据的工具</a> (3)</li><li>2009-11-18 -- <a href="https://www.dbainfo.net/sybase-ase-recovery-tool.htm" title="Sybase Adaptive Server Enterprise(ASE)数据库恢复工具">Sybase Adaptive Server Enterprise(ASE)数据库恢复工具</a> (2)</li><li>2019-04-12 -- <a href="https://www.dbainfo.net/sybase-ase-asa-recovery-service.htm" title="Sybase ASE及SQL Anywhere数据库修复专家">Sybase ASE及SQL Anywhere数据库修复专家</a> (0)</li><li>2019-04-11 -- <a href="https://www.dbainfo.net/sql-server-recovery-service.htm" title="SQL Server 数据库修复专家SQLRescue">SQL Server 数据库修复专家SQLRescue</a> (0)</li><li>2015-01-16 -- <a href="https://www.dbainfo.net/one-way-to-recover-master-configuration-area.htm" title="master数据库配置区域(configuration area)损坏的一种修复方法">master数据库配置区域(configuration area)损坏的一种修复方法</a> (1)</li><li>2012-09-26 -- <a href="https://www.dbainfo.net/config_dbccdb.htm" title="dbcc配置过程">dbcc配置过程</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>https://www.dbainfo.net/sybase-ase-flashback-table-to-before-drop-table.htm/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SQL SERVER DBCC命令解释</title>
		<link>https://www.dbainfo.net/sql-server-dbcc-synta.htm</link>
		<comments>https://www.dbainfo.net/sql-server-dbcc-synta.htm#comments</comments>
		<pubDate>Wed, 18 Nov 2009 14:50:37 +0000</pubDate>
		<dc:creator>dbainfo</dc:creator>
				<category><![CDATA[SQL SERVER]]></category>
		<category><![CDATA[DBCC]]></category>
		<category><![CDATA[sqlserver]]></category>

		<guid isPermaLink="false">http://www.dbainfo.net/?p=69</guid>
		<description><![CDATA[SQL SERVER DBCC命令解释 ------------------------------------------ --1 dbcc trraceon DBCC TRACEOFF --对于数据库死锁，通常可以通过TRACE FLAG 1204、1205、1206，检查ERRORLOG里面的输出，和分析SQLTRACE的执行上下文判断死锁问题的来由。 --TRACEON函数的第三个参数设置为-1，表示不单单针对当前connection， --而是针对所有包括未来建立的connection。这样，才够完全，否则只是监视当前已经建立的数据库连接了。 --执行下面的话可以把死锁记录到Errorlog中： dbcc traceon (1204, 3605, -1) go dbcc tracestatus(-1) go --说明： --260：打印关于扩展存储过程动态链接库的版本信息 --444：停止auto-parameterization --1200：输出锁信息 --1204：传回参与死锁的SQL SERVER相关程序之运行数据 --1211：停止lock escalation（锁升级） --1252：显示动态选择锁的相关信息 --2528：通过 DBCC CHECKDB、DBCC CHECKFILEGROUP 和 DBCC CHECKTABLE 禁用对象的并行检查。 --默认情况下，并行度由查询处理器自动确定。最大并行度的配置方式与并行查询相同。 --有关更多信息，请参见 max degree of parallelism 选项。 -- 通常情况下，应将并行 DBCC 保留为启用状态。执行 DBCC CHECKDB 时， [...]]]></description>
			<content:encoded><![CDATA[<p>SQL SERVER DBCC命令解释<br />
	------------------------------------------<br />
	--1 dbcc trraceon DBCC TRACEOFF<br />
	--对于数据库死锁，通常可以通过TRACE FLAG 1204、1205、1206，检查ERRORLOG里面的输出，和分析SQLTRACE的执行上下文判断死锁问题的来由。<br />
	--TRACEON函数的第三个参数设置为-1，表示不单单针对当前connection，<br />
	--而是针对所有包括未来建立的connection。这样，才够完全，否则只是监视当前已经建立的数据库连接了。<br />
	--执行下面的话可以把死锁记录到Errorlog中：<br />
	dbcc traceon (1204, 3605, -1)<br />
	go<br />
	dbcc tracestatus(-1)<br />
	go</p>
<p>--说明：<br />
	--260：打印关于扩展存储过程动态链接库的版本信息<br />
	--444：停止auto-parameterization<br />
	--1200：输出锁信息<br />
	--1204：传回参与死锁的SQL SERVER相关程序之运行数据<br />
	--1211：停止lock escalation（锁升级）<br />
	--1252：显示动态选择锁的相关信息<br />
	--2528：通过 DBCC CHECKDB、DBCC CHECKFILEGROUP 和 DBCC CHECKTABLE 禁用对象的并行检查。<br />
	--默认情况下，并行度由查询处理器自动确定。最大并行度的配置方式与并行查询相同。<br />
	--有关更多信息，请参见 max degree of parallelism 选项。<br />
	-- 通常情况下，应将并行 DBCC 保留为启用状态。执行 DBCC CHECKDB 时，<br />
	-- 查询处理器重新评估和自动调整并行度，并检查每个表或一批表。<br />
	--有时，检查可能在服务器处于实际空闲状态时进行。如果管理员知道在检查结束前负荷将加大，<br />
	--可能希望手工减小或禁用并行度。<br />
	-- 但是，禁用并行检查会导致数据库的总体性能降低。降低并行度将增加必须扫描的事务日志量。<br />
	--这反过来增加了对 tempdb 空间的需求，并导致 dbcc 完成检查所需的时间非线性增加。<br />
	--如果运行 DBCC 时启用了 TABLOCK 功能并关闭了并行度，则表可能被锁定更长时间。<br />
	--3205：默认情况下，如果磁带驱动器支持硬件压缩，则 DUMP 或 BACKUP 语句会使用该功能。<br />
	-- 利用此跟踪标记，可以禁用磁带驱动程序的硬件压缩。<br />
	-- 本项在要与不支持压缩的其它站点或磁带驱动器交换磁带时有用。<br />
	--3604：将trace结果输出到前端<br />
	--3605：要求DBCC的输出放到SQL server ERROR LOG<br />
	--8602：停止索引提示功能<br />
	--8722：停止join group等最优化提示功能<br />
	--8755：停止锁提示功能<br />
	--8780：停止最优化超时配置，强制做完整的最优化动作<br />
	------------------------------------------------------<br />
	--2 DBCC page<br />
	dbcc traceon(3604)<br />
	dbcc page(northwind,1,100,1)<br />
	/*查询northwind 的数据的第101个页面的信息*/<br />
	/*DBCC Page ({dbid|dbname},filenum,pagenum[,printopt])<br />
	?<br />
	具体参数描述如下：<br />
	dbid: 包含页面的数据库ID<br />
	dbname:包含页面的数据库的名称<br />
	filenum:包含页面的文件编号<br />
	pagenum:文件内的页面<br />
	printopt:可选的输出选项；选用其中一个值：<br />
	0:默认值，输出缓冲区的标题和页面标题<br />
	1:输出缓冲区的标题、页面标题(分别输出每一行)，以及行偏移量表<br />
	2:输出缓冲区的标题、页面标题(整体输出页面)，以及行偏移量表<br />
	3:输出缓冲区的标题、页面标题(分别输出每一行)，以及行偏移量表；每一行后跟分别列出的它的列值<br />
	*/<br />
	------------------------------------------------------<br />
	--3 DBCC checkalloc<br />
	DBCC checkalloc（northwind)<br />
	/*检查指定数据库的系统表内和表间的一致性<br />
	checkalloc是检查指定数据库，看其所有正确分配的页和尚未分配的页的情况。<br />
	若未指定数据库名，则checkalloc检查当前数据库。checkalloc会返回已分配的和使用的空间数量。<br />
	checkalloc的缺省模式为nofix，要使用fix选项，必须把数据库置于单用户模式。<br />
	*/<br />
	-----------------------------------------------------<br />
	--4 DBCC checkcatalog<br />
	DBCC checkcatalog(northwind)<br />
	/*<br />
	检查批定数据库的系统表内和系统表间的一致性<br />
	*/<br />
	-----------------------------------------------------<br />
	--5 DBCC checkconstraints<br />
	DBCC checkconstraints(products)<br />
	/*<br />
	检查指定表上的指定约束或所有约束的完整性<br />
	DBCC CHECKCONSTRAINTS<br />
	[(&#39;table_name&#39;|&#39;constraint_name&#39;<br />
	)]<br />
	[WITH {ALL_ERRORMSGS|ALL_CONSTRAINTS}]<br />
	DBCC CHECKCONSTRAINTS在某个数据库中，检测某些特定的约束或者全部约束的一致性。<br />
	DBCC CHECKCONSTRAINTS总是在当前数据库的上下文环境中执行。<br />
	　　注意，DBCC CHECKCONSTRAINTS并不进行磁盘或者文件级别的一致性检测;<br />
	它只是确保外键定义的一致性，同时检测约束&mdash;&mdash;仅仅是确认数据有效。<br />
	如果你希望检测磁盘上表和索引的一致性，<br />
	你应该执行DBCC CHECKDB或者在所有的表上执行DBCC CHECKALLOC和 DBCC CHECKTABLE的组合。<br />
	*/<br />
	------------------------------------------------------<br />
	--6 DBCC checkdb<br />
	DBCC checkdb<br />
	/*<br />
	检查数据库中的所有对象的分配和结构完整性<br />
	checkdb [(&#39;database_name&#39;[, NOINDEX | REPAIR])]<br />
	[WITH NO_INFOMSGS[, ALL_ERRORMSGS][, PHYSICAL_ONLY]<br />
	[, ESTIMATEONLY][, TABLOCK]]<br />
	*/<br />
	-----------------------------------------------------<br />
	--7 DBCC cleantable<br />
	DBCC cleantable<br />
	/*<br />
	回收alter table drop column语句 删除可变长度列或text列后的存储空间<br />
	cleantable (&#39;database_name&#39;|database_id, &#39;table_name&#39;|table_id, [batch_size])<br />
	*/<br />
	-----------------------------------------------------<br />
	--8 DBCC dbreindex<br />
	DBCC dbreindex<br />
	/*<br />
	重建指定数据库的一个或多个索引<br />
	dbreindex (&#39;table_name&#39; [, index_name [, fillfactor ]]) [WITH NO_INFOMSGS]<br />
	*/<br />
	-----------------------------------------------------<br />
	--9 DBCC indexdefrag<br />
	DBCC indexdefrag<br />
	/*<br />
	对表或视图上的索引和非聚集索引进行碎片整理<br />
	indexdefrag ({dbid | dbname | 0}, {tableid | tablename}, {indid | indname})<br />
	*/<span id="more-69"></span></p>
<p><strong>在小规模环境下，DBCC INDEXDEFRAG的结果比DBCC DBREINDEX要好一些。不过，在大多数情况下，完全重建索引应该具有更好的性能。<br />
	当DBCC INDEXDEFRAG运行在一个动态的系统上，即数据保持在线更新，DBCC INDEXDEFRAG会跳过那些被锁住的页。因此DBCC INDEXDEFRAG也许就无法完全消除碎片。要衡量DBCC INDEXDEFRAG发挥了多大作用，可以在DBCC INDEXDEFRAG后立刻运行DBCC SHOWCONTIG。<br />
	DBCC DBREINDEX完全重建索引 </strong></p>
<p>--------------------------------------------------------<br />
	--10 DBCC pintable/DBCC unpintable<br />
	--将表数据驻留在内存中或撤销驻留 在内存中的数据<br />
	--pintable (database_id, table_id)<br />
	----------------------------------------------------------<br />
	--11 DBCC shrinkdatabase<br />
	--收缩指定数据库的数据文件和日志文件大小<br />
	--shrinkdatabase ({dbid | &#39;dbname&#39;}, [freespace_percentage [, {NOTRUNCATE | TRUNCATEONLY}]])<br />
	----------------------------------------------------------<br />
	--12 DBCC shrinkfile<br />
	--收缩相关数据库的指定数据文件和日志文件大小<br />
	--shrinkfile ({fileid | &#39;filename&#39;}, [compress_size [, {NOTRUNCATE | TRUNCATEONLY | EMPTYFILE}]])<br />
	------------------------------------------------------------<br />
	--13 DBCC dllname(free)<br />
	--在内存中制裁指定的扩展想念过程动态链接库（DLL）<br />
	sp_helpextended proc<br />
	--查询当前内存中的扩展存储过程动态链接库<br />
	-------------------------------------------------------------<br />
	--14 DBCC dropcleanbuffers<br />
	--从缓冲池中删除所有缓冲区<br />
	/*<br />
	使用 DBCC DROPCLEANBUFFERS 测试带有冷高速缓存的查询，而不用关闭和重新启动服务器<br />
	*/<br />
	---------------------------------------------------------------<br />
	--15 DBCC freeproccache<br />
	--从过程缓冲区删除所有元素<br />
	--清理所有数据库的过程高速缓存<br />
	-----------------------------------------------------------------<br />
	--16 DBCC inputButter<br />
	--显示从客户机发送到服务器的最后一个语句<br />
	-------------------------------------------------------------<br />
	--17 DBCC opentran<br />
	--查询某个数据库执行时间最久的事务，由哪个程序拥有<br />
	----------------------------------------------------------------<br />
	--18 DBCC show_statistics<br />
	--显示指定表上的指定目前的当前分布统计信息<br />
	------------------------------------------------------------------<br />
	--19 DBCC showcontig<br />
	--显示指定表的数据和索引的碎片信息<br />
	-----------------------------------------------------------------<br />
	--20 DBCC sqlperf<br />
	--可用参数logspace,iostats,threads<br />
	--返回多种有用的统计信息<br />
	---dbcc sqlperf(logspace)<br />
	Database Name Log Size (MB) Log Space Used (%) Status<br />
	-------------------------------------------------------------------------------------------------------------------------------- ------------------------ ------------------------ -----------<br />
	master 5.0546875 27.93663 0<br />
	tempdb 0.7421875 58.88158 0<br />
	model 0.4921875 74.206352 0<br />
	msdb 2.2421875 38.414635 0<br />
	pubs 0.7421875 43.947369 0<br />
	Northwind 0.9921875 41.732285 0<br />
	db40cdr 32.304688 6.3618503 0<br />
	fcdb 218.30469 79.981796 0<br />
	fcdb_20070826 19.992188 3.0138726 0<br />
	test 176.92969 6.4423542 0<br />
	kldb 0.9921875 33.267715 0<br />
	--dbcc sqlperf(iostats)<br />
	Statistic Value<br />
	-------------------------------- ------------------------<br />
	Reads Outstanding 0.0<br />
	Writes Outstanding 0.0<br />
	--dbcc sqlperf(threads)<br />
	Spid Thread ID Status LoginName IO CPU MemUsage<br />
	------ ----------- ---------- ---------- ---------------------- ----------- -----------<br />
	1 NULL background NULL 0 0 0<br />
	2 NULL background NULL 0 0 5<br />
	3 NULL sleeping NULL 0 0 0<br />
	4 NULL background NULL 0 0 -6<br />
	5 0 background sa 41 0 3<br />
	6 NULL sleeping NULL 1 0 0<br />
	7 0 background sa 0 0 3<br />
	8 0 background sa 0 0 3<br />
	9 0 background sa 0 0 3<br />
	10 0 background sa 0 0 3<br />
	11 0 background sa 0 0 3<br />
	12 0 background sa 0 0 3<br />
	51 0 sleeping RD-001\Adm 19 32 29<br />
	52 0 sleeping RD-001\Adm 6 515 15<br />
	53 3828 runnable RD-001\Adm 1 15 5<br />
	------------------------------------------------------------------<br />
	--21 DBCC cachestats<br />
	--显示SQL SERVER内存的统计信息<br />
	-----------------------------------------------------------------<br />
	--22 DBCC cursorstats<br />
	--显示SQL SERVER游标的统计信息<br />
	------------------------------------------------------------------<br />
	--23 DBCC sqlmgrstats<br />
	--显示缓冲中先读和预先准备的SQL语句<br />
	------------------------------------------------------------<br />
	--24 DBCC errlog<br />
	--初始化SQL SERVER错误日志文件<br />
	----------------------------------------------------------<br />
	--25 DBCC flushprocindb<br />
	--清除SQL SERVER服务器内存中某个数据库的存储过程缓存内容<br />
	----------------------------------------------------------<br />
	--26 DBCC Buffer<br />
	--显示缓冲区的善信息和页面信息<br />
	--------------------------------------------------------<br />
	--27 DBCC DBinfo<br />
	--显示数据库结构信息<br />
	------------------------------------------------------------<br />
	--28 DBCC DBtable<br />
	--显示管理数据的表信息<br />
	-----------------------------------------------------------<br />
	--29 DBCC IND<br />
	--查看某个索引使用的页面信息<br />
	-------------------------------------------------------------<br />
	--30 DBCC REbuild_log<br />
	--重建SQL SERVER事务日志文件<br />
	------------------------------------------------------------<br />
	--31 DBCC log<br />
	--查看某个数据库使用的事务日志信息<br />
	-----------------------------------------------------------<br />
	--32 DBCC procbuf<br />
	--显示过程缓冲池中的缓冲区头和存储过程头<br />
	------------------------------------------------------------<br />
	--33 DBCC prtipage<br />
	--查看某个索引页面的每行指向的页面号<br />
	------------------------------------------------------------<br />
	--34 DBCC pss<br />
	--显示当前连接到SQL SERVER的进程信息<br />
	-----------------------------------------------------------<br />
	--35 DBCC resource<br />
	--显示服务器当前使用的资源情况<br />
	------------------------------------------------------------<br />
	--36 DBCC tab<br />
	--查看数据页面的结构<br />
	----------------------------------------------------------</p>
<p>1. DBCC CHECKDB<br />
	　　重启服务器后，在没有进行任何操作的情况下，在SQL查询分析器中执行以下SQL进行数据库的修复，修复数据库存在的一致性错误与分配错误。</p>
<p>&nbsp;<br />
	use master<br />
	declare @databasename varchar(255)<br />
	set @databasename=&#39;需要修复的数据库实体的名称&#39;<br />
	exec sp_dboption @databasename, N&#39;single&#39;, N&#39;true&#39; --将目标数据库置为单用户状态<br />
	dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)<br />
	dbcc checkdb(@databasename,REPAIR_REBUILD)<br />
	exec sp_dboption @databasename, N&#39;single&#39;, N&#39;false&#39;--将目标数据库置为多用户状态</p>
<p>然后执行 DBCC CHECKDB(&#39;需要修复的数据库实体的名称&#39;) 检查数据库是否仍旧存在错误。注意：修复后可能会造成部分数据的丢失。</p>
<p>2. DBCC CHECKTABLE<br />
	如果DBCC CHECKDB 检查仍旧存在错误，可以使用DBCC CHECKTABLE来修复。<br />
	use 需要修复的数据库实体的名称<br />
	declare @dbname varchar(255)<br />
	set @dbname=&#39;需要修复的数据库实体的名称&#39;<br />
	exec sp_dboption @dbname,&#39;single user&#39;,&#39;true&#39;<br />
	dbcc checktable(&#39;需要修复的数据表的名称&#39;,REPAIR_ALLOW_DATA_LOSS)<br />
	dbcc checktable(&#39;需要修复的数据表的名称&#39;,REPAIR_REBUILD)<br />
	------把&rsquo; 需要修复的数据表的名称&rsquo;更改为执行DBCC CHECKDB时报错的数据表的名称<br />
	exec sp_dboption @dbname,&#39;single user&#39;,&#39;false&#39;</p>
<p>3. 其他的一些常用的修复命令<br />
	DBCC DBREINDEX 重建指定数据库中表的一个或多个索引<br />
	用法：DBCC DBREINDEX (表名,&rsquo;&rsquo;) 修复此表所有的索引。</p>
<p>＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝</p>
<p>SQL SERVER数据库的检测及修复方法<br />
	随着K/3产品的推广，要求客户服务人员对SQL SERVER数据库的了解也进一步提高。在K/3的使用过程中，数据库文件被频繁地使用，由于某些原因，数据库有可能被损坏，本文将针对这种情况的数据库检测及修复方法做一简单讲解。希望各位在实际工作过程中有新的发现时，及时给我们提供信息，以便做进一步的更新。<br />
	1.1 SQL SERVER数据库的检测<br />
	SQL SERVER提供了数据库检测的命令，可用DBCC CHECKDB对数据库中各个对象的分配及结构的正确性进行检测，并可通过一参数控制，将所有的错误信息显示出来。其语法如下：<br />
	DBCC CHECKDB<br />
	(&#39;database_name&#39; [,NOINDEX | { REPAIR_ALLOW_DATA_LOSS<br />
	| REPAIR_FAST<br />
	| REPAIR_REBUILD<br />
	}]<br />
	) [WITH {ALL_ERRORMSGS | NO_INFOMSGS}]<br />
	参数说明：<br />
	&#39;database_name&#39;代表被检测的数据库实体名；<br />
	NOINDEX指非系统表的非聚族索引不检测；<br />
	REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST| REPAIR_REBUILD 指直接修复发现的错误，其中REPAIR_ALLOW_DATA_LOSS代表，若此错误不能修复时，系统将直接删除相关数据。带此三个参数的任一个时，数据库必须处于单用户模式，可在Enterprise Manager中的数据库属性中设置；<br />
	ALL_ERRORMSGS代表将检测到的错误信息全部显示出来，否则，对于每张表最多只显示200条错误信息；<br />
	NO_INFOMSGS代表隐藏所有的信息及占用空间的报告。<br />
	经过检测，对于错误的对象，将以OBJECT ID的形式报告具体出错的信息，可根据OBJECT ID到系统表sysobjects中查找到相关的表，即NAME。</p>
<p>1.2 SQL SERVER问题数据库的修复<br />
	经过数据库检测后，可针对出现的问题采取相应的措施进行处理。如通过检测后，发现对象的物理存放存在问题，可用DBCC CHECKALLOC来进行修复：<br />
	DBCC CHECKALLOC (&#39;database_name&#39; | REPAIR_REBUILD }] ) [WITH {ALL_ERRORMSGS | NO_INFOMSGS}]<br />
	若是非系统对象的索引出错，则可用DBCC DBREINDEX进行修复：<br />
	DBCC DBREINDEX ( [ &#39;database.owner.table_name&#39; [, index_name [, fillfactor ] ] ] ) [WITH NO_INFOMSGS]<br />
	以上两种情况，也可直接使用DBCC CHECKDB(&lsquo;db_name&rsquo;,repair_rebuild)来修复。<br />
	另外一种情况是在进行检测时，提示无法建立数据连接，此时表明，数据库已损坏。对于这种情况，我们可采取如下措施来尝试修复。<br />
	首先，在SQL Enterprise中新建一数据库（如数据库名为test）,建好数据库后，停止SQL Server Service Manager，并将客户数据库的MDF文件更名为test _data.mdf(即新建数据库的主文件名)，然后用更名后的文件覆盖新建数据库同名文件，接着，启动SQL Server Service Manager。对Master数据库将系统表设置为可更改状态<br />
	Use Master<br />
	Go<br />
	sp_configure &#39;allow updates&#39;, 1<br />
	reconfigure with override<br />
	Go<br />
	将数据库设为紧急状态：<br />
	update sysdatabases set status = 32768 where database &#39;<br />
	停止并重新启动SQL Server Service Manager，并重建Log文件：<br />
	DBCC TRACEON (3604)<br />
	DBCC REBUILD_LOG(&#39; test &#39;,&#39;test _log_ldf&#39;)<br />
	将数据库设置为单用户模式，然后进行检测：<br />
	sp_dboption &#39; test &#39;, &#39;single user&#39;, &#39;true&#39;<br />
	DBCC CHECKDB(&#39; test &#39;)<br />
	Go<br />
	此数据库执行CHECKDB的过程中发现一些表的索引被破坏，于是针对具体的表进行重建索引的操作：<br />
	DBCC DBREINDEX（表名）<br />
	如执行以上操作仍然不能解决，若索引破坏的表是临时表或不是关键表，则可从新建账套中引入，若是主表，则可能通过近期的备份来（部份）恢复。若没有一个备份，则无法修复。</p>
<p>1.3 SQL Server数据库为什么易损坏呢？<br />
	以下是微软提供的一些可能引起数据库损坏的原因及一些预防措施：<br />
	操作问题，包括冷起动机器、热拔硬盘、删除一些数据库文件；<br />
	硬件问题，包括磁盘控制器的问题；<br />
	操作系统问题，包括与系统相关的一些致命错误。</p>
<p>1.4 预防措施：<br />
	1、定期/不定期执行CHKDSK(不带参数)，以检测硬盘物理结构并修复一些CHKDSK报告的问题；<br />
	2、常备份数据。</p>
<p>1.5 应用数据库修复举例<br />
	declare @databasename varchar(255)<br />
	set @databasename=&#39;AIS20021224170730&#39;------一定要手工输入<br />
	---------执行一般性修复还存在问题时,进行允许数据丢失的修复<br />
	---------许数据丢失的修复要求在单用户下进行,此时请退出中间层,客户端,sql的其他模块<br />
	---所有功能退出,在查询分析器master里设置数据库为单用户</p>
<p>exec sp_dboption @databasename, N&#39;single&#39;, N&#39;true&#39;</p>
<p>-----在查询分析器master里,进行修复数据库<br />
	dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)<br />
	dbcc checkdb(@databasename,REPAIR_REBUILD)<br />
	------还原数据库状态<br />
	exec sp_dboption @databasename, N&#39;single&#39;, N&#39;false&#39;</p>
<p>第2章数据库日志损坏的修复<br />
	请遵照如下步骤来试图重建数据库事务日志.</p>
<p>注意: 由于事务日志丢失, 数据库可能有没有提交的数据.</p>
<p>注:都要替换成真实的数据库名字</p>
<p>2.1 步骤1:</p>
<p>创建一个新的数据库,命名为原来数据库的名字.</p>
<p>2.2步骤2:</p>
<p>停止SQL Server</p>
<p>2.3步骤3:</p>
<p>把老数据库的MDF文件替换新数据库的相应的MDF文件, 并把LDF文件删除</p>
<p>2.4步骤4:</p>
<p>重新启动SQL Server 服务,然后运行如下命令:</p>
<p>Use Master</p>
<p>Go</p>
<p>sp_configure &#39;allow updates&#39;, 1</p>
<p>reconfigure with override</p>
<p>Go</p>
<p>begin tran</p>
<p>update sysdatabases set status = 32768 where db_name&#39;</p>
<p>-- Verify one row is updated before committing</p>
<p>commit tran</p>
<p>2.5步骤5:</p>
<p>停止SQL然后重新启动SQL Server 服务,然后运行如下命令:</p>
<p>DBCC TRACEON (3604)</p>
<p>DBCC REBUILD_LOG(&#39;db_name&#39;,&#39;c:\mssql7\data\dbxxx_3.LDF&#39;)</p>
<p>Go</p>
<p>2.6步骤6:</p>
<p>停止SQL然后重新启动SQL Server 服务,然后运行:</p>
<p>use master</p>
<p>update sysdatabases set status = 8 where<br />
	Go</p>
<p>sp_configure &#39;allow updates&#39;, 0</p>
<p>reconfigure with override</p>
<p>Go</p>
<p>2.7步骤7:<br />
	运行dbcc checkdb(db_name)检查数据库的完整性.</p>
<p>第3章 数据库质疑的一般处理<br />
	1、执行如下SQL（打开修改系统表的开关）：<br />
	EXEC sp_configure &#39;allow updates&#39;, 1<br />
	RECONFIGURE WITH OVERRIDE<br />
	2、修改数据库Master中的表：sysdatabases<br />
	将 status字段数值更改为4<br />
	3、再执行如下SQL：<br />
	EXEC sp_configure &#39;allow updates&#39;, 0<br />
	RECONFIGURE WITH OVERRIDE。</p>
<div style="clear: both; margin: 10px 0pt; border: 1px dashed rgb(153, 153, 153); font-size: 12px; padding: 5px 10px;">
<li>本文链接地址：<a href="https://www.dbainfo.net/sql-server-dbcc-synta.htm">https://www.dbainfo.net/sql-server-dbcc-synta.htm</a>；</li>
<li>本文为dbainfo个人原创，请在尊重作者劳动成果的前提下进行转载；</li>
<li>转载务必注明原始出处 : <a href="https://www.dbainfo.net/">Sybase数据库技术，数据库恢复专家</a>；</li>
<li>对《<a href="https://www.dbainfo.net/sql-server-dbcc-synta.htm">SQL SERVER DBCC命令解释</a>》有何疑问或见解，请在本文下方发表；</li>
<li>对网站还有其他问题或建议，请提交在<a href="https://www.dbainfo.net/messages" target="_blank">留言板</a>，谢谢！</li>
</div>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2010-08-23 -- <a href="https://www.dbainfo.net/direct-modify-sqlserver-data-page-by-dbcc-writepage.htm" title="利用dbcc writepage命令修改SQL SQLSERVER中的物理页面上的内容">利用dbcc writepage命令修改SQL SQLSERVER中的物理页面上的内容</a> (3)</li><li>2019-04-11 -- <a href="https://www.dbainfo.net/sql-server-recovery-service.htm" title="SQL Server 数据库修复专家SQLRescue">SQL Server 数据库修复专家SQLRescue</a> (0)</li><li>2012-09-26 -- <a href="https://www.dbainfo.net/config_dbccdb.htm" title="dbcc配置过程">dbcc配置过程</a> (0)</li><li>2010-12-27 -- <a href="https://www.dbainfo.net/one-undocument-dbcc-command-handover-table-ownership.htm" title="使用重启数据库的未认证DBCC命令来移交表的所有权">使用重启数据库的未认证DBCC命令来移交表的所有权</a> (2)</li><li>2010-11-03 -- <a href="https://www.dbainfo.net/sql2005-direct-update-system-catalogs.htm" title="SQL2005 如何更新系统表">SQL2005 如何更新系统表</a> (2)</li><li>2010-09-28 -- <a href="https://www.dbainfo.net/sql-server-database-all-tables-space-order-desc2.htm" title="SQL SERVER中查看表占用空间的另外一种方法">SQL SERVER中查看表占用空间的另外一种方法</a> (0)</li><li>2010-09-16 -- <a href="https://www.dbainfo.net/java-connect-to-sqlserver-demo.htm" title="Java连接SQL Server数据库的一个简单例子">Java连接SQL Server数据库的一个简单例子</a> (0)</li><li>2010-09-15 -- <a href="https://www.dbainfo.net/sql-server-database-all-tables-space-order-desc.htm" title="统计SQL SERVER数据库内所有表占用空间并排序">统计SQL SERVER数据库内所有表占用空间并排序</a> (0)</li><li>2010-09-06 -- <a href="https://www.dbainfo.net/sql-server-linked-server-summary.htm" title="SQL Server的链接服务器技术小结[转]">SQL Server的链接服务器技术小结[转]</a> (0)</li><li>2010-08-29 -- <a href="https://www.dbainfo.net/access-sqlserver-from-oracle-by-transgate.htm" title="从oracle内访问sqlserver2005的数据时一个错误">从oracle内访问sqlserver2005的数据时一个错误</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>https://www.dbainfo.net/sql-server-dbcc-synta.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
