<?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; sp_helpdevice2</title>
	<atom:link href="http://www.dbainfo.net/tag/sp_helpdevice2/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>ASE15.x之前版本中查看设备剩余空间以及设备上数据库分配信息的存储过程</title>
		<link>https://www.dbainfo.net/get-free-space-of-device-and-database-allocation-prior-to-ase12-5.htm</link>
		<comments>https://www.dbainfo.net/get-free-space-of-device-and-database-allocation-prior-to-ase12-5.htm#comments</comments>
		<pubDate>Thu, 25 Aug 2011 08:19:06 +0000</pubDate>
		<dc:creator>dbainfo</dc:creator>
				<category><![CDATA[Sybase ASE]]></category>
		<category><![CDATA[sp_helpdevice2]]></category>
		<category><![CDATA[空间]]></category>

		<guid isPermaLink="false">http://www.dbainfo.net/?p=943</guid>
		<description><![CDATA[在ASE15.x之前的所有版本中（包括ASE12.5.4），存储过程sp_helpdevcie无法显示设备的剩余空间以及设备上各个数据库的具体分配情况。 比如：在ASE12.5中，执行sp_helpdevice master的结果为： 1&#62; sp_helpdevice master 2&#62; go &#160;device_name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; physical_name &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; description &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; status cntrltype device_number &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; low &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; high ---------------------------------------------------------------------------------------------------------------- &#160;master&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; e:\sybase125\data\master.dat &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; special, dsync on, default disk, physical disk, 100.00 MB &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 51199 (1 row affected) (return status = 0) 上面输出结果中加粗标记出来的100.00MB表示master设备的总大小。至于master设备还剩余多少空间？master设备都分配给哪些数据库使用了？ASE15.x之前版本的存储过程sp_helpdevice不能给出答案。 在ASE15.0之后版本的系统存储过程sp_helpdevice增加了上述功能。比如：ASE15.0.3中执行sp_helpdevice master的结果如下： 1&#62; sp_helpdevice master 2&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>在ASE15.x之前的所有版本中（包括ASE12.5.4），存储过程sp_helpdevcie无法显示设备的剩余空间以及设备上各个数据库的具体分配情况。</p>
<p>比如：在ASE12.5中，执行sp_helpdevice master的结果为：</p>
<blockquote>
<p>1&gt; sp_helpdevice master<br />
		2&gt; go<br />
		&nbsp;device_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; physical_name<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; description<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; status cntrltype device_number<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; low<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; high<br />
		----------------------------------------------------------------------------------------------------------------<br />
		&nbsp;master&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e:\sybase125\data\master.dat<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; special, dsync on, default disk, physical disk, <strong>100.00 MB</strong><br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51199</p>
<p>		(1 row affected)<br />
		(return status = 0)</p>
</blockquote>
<p>上面输出结果中加粗标记出来的100.00MB表示master设备的总大小。至于master设备还剩余多少空间？master设备都分配给哪些数据库使用了？ASE15.x之前版本的存储过程sp_helpdevice不能给出答案。<span id="more-943"></span></p>
<p>在ASE15.0之后版本的系统存储过程sp_helpdevice增加了上述功能。比如：ASE15.0.3中执行sp_helpdevice master的结果如下：</p>
<blockquote>
<p>1&gt; sp_helpdevice master<br />
		2&gt; go<br />
		&nbsp;device_name physical_name<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; description<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; status cntrltype vdevno vpn_low vpn_high<br />
		-------------------------------------------------------------------------------------<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ------ --------- ------ ------- --------<br />
		&nbsp;master&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D:\sybase\data\master.dat<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file system device, special, MIRROR ENABLED, mirror = &#39;D:\sybase\data\master_mirr.dat&#39;, serial writes, dsync on, directio off, reads mirrored,<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default disk, physical disk, <strong>80.00 MB, Free: 42.00 MB</strong><br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 739&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp; 40959</p>
<p>		(1 row affected)<br />
		&nbsp;<strong>dbname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allocated&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vstart lstart<br />
		&nbsp;----------- ------------- ------------------- ------ ------<br />
		&nbsp;master&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26.00 MB Dec&nbsp; 2 2009&nbsp; 6:58PM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
		&nbsp;model&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.00 MB Dec&nbsp; 2 2009&nbsp; 6:58PM&nbsp; 13316&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
		&nbsp;sybsystemdb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.00 MB Dec&nbsp; 2 2009&nbsp; 6:58PM&nbsp; 19460&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0</strong></p>
<p>		(1 row affected)<br />
		(return status = 0)</p>
</blockquote>
<p>上面的结果包含master设备的剩余空间：42MB，以及master设备上分配了master，model，sybsystemdb三个系统库，以及相应的数据库大小、分配日期等等。</p>
<p>那么，如何在ASE15.x之前的版本中查看设备的剩余空间以及设备上的数据库分配信息呢？</p>
<p>方法有两种：</p>
<p><span style="font-size:14px;"><strong>1.</strong></span>使用sybase central这个sybase ASE自带的客户端工具。个人感觉ASE15以来自带的Sybase Central功能比较丰富，更加易用了。</p>
<p>在ASE12.5自带的Sybase Central上查看各设备的剩余空间：</p>
<p style="text-align: center;"><img alt="ASE12.5 上使用sybase central查看数据库各设备的总空间、剩余空间信息" height="158" src="https://www.dbainfo.net/wp-content/uploads/2011/08/ase125_sp_helpdevice_result.jpg" width="621" /></p>
<p>在master设备上点右键，选择&ldquo;属性&rdquo;，切换到databases能够看到在master设备上各个数据库所分配的空间。</p>
<p style="text-align: center;"><img alt="查看master设备上所分配的所有数据库" height="493" src="https://www.dbainfo.net/wp-content/uploads/2011/08/master-device-db-allocation.jpg" width="393" /></p>
<p><strong><span style="font-size:14px;">2.</span></strong>自己编写一个存储过程，比如：sp_helpdevice2。</p>
<p>我参考了ASE12.5.4和ASE15.0.3中的sp_helpdevice的语法完成该过程sp_helpdevice2的编写。分别在ASE v11.0.1, ASE v11.5.1， ASE v11.9.2, ASE v12.5, v12.5.0.3, v12.5.4 平台上进行了测试。</p>
<p>/*<br />
	* 此存储过程sp_helpdevice2适用于 ASE v11.x, v12.x,不能用于ASE15.x。实际上ASE15.x中的sp_helpdevice包含设备剩余空间以及设备上所分配的数据库的功能！<br />
	* ASE v11.x版本中系统表 sysusages中没有crdate这个表示设备段分配时间的字段，考虑到支持ASEv11.x，为了简单处理，没有在Allocation information 中列出设备段的具体分配时间！<br />
	*/</p>
<blockquote>
<p>/*<br />
		* 此存储过程在ASE v11.0.1, ASE v11.5.1，ASE v11.9.2, ASE v12.5, v12.5.0.3, v12.5.4 平台测试通过！适用于 ASE v11.x, v12.x,不能用于ASE15。实际上ASE15.x中的sp_helpdevice完全能够实现该功能！<br />
		* ASE v11.x版本中系统表 sysusages中没有crdate这个表示设备段分配时间的字段，考虑到支持ASEv11.x为了简单处理，没有在Allocation information 中列出设备段的具体分配时间！<br />
		*/<br />
		use sybsystemprocs<br />
		go</p>
<p>		if exists(select 1 from dbo.sysobjects where type=&#39;P&#39; and name=&#39;sp_helpdevice2&#39;)<br />
		&nbsp; drop procedure sp_helpdevice2<br />
		go</p>
<p>		create procedure sp_helpdevice2<br />
		@devname varchar(30) = &quot;%&quot;<br />
		as</p>
<p>		declare @numpgsmb float<br />
		declare @numpgsmb2 float<br />
		declare @Major_Version int</p>
<p>		set nocount on <br />
		select @numpgsmb = (1048576. / @@pagesize)<br />
		select @numpgsmb2 = (1048576. / @@maxpagesize)<br />
		--select @version_as_num = @@version_as_integer<br />
		select @Major_Version= convert(int, right(substring(@@version,1,charindex(&#39;.&#39;,@@version)-1),2) )</p>
<p>		if @Major_Version &gt;= 15 or @Major_Version &lt; 11<br />
		begin <br />
		&nbsp;&nbsp;&nbsp; print &quot;this procedure is available for ASE versions from v11.x to v12.5.x, not for ASE15.x!&quot;<br />
		&nbsp;&nbsp;&nbsp; return (1)<br />
		end</p>
<p>		/*&nbsp; See if the device exists.*/<br />
		if not exists (select *<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; from master.dbo.sysdevices<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; where name like @devname)<br />
		begin<br />
		&nbsp;&nbsp;&nbsp; /* 17610, &quot;No such i/o device exists.&quot; */<br />
		&nbsp;&nbsp;&nbsp; raiserror 17610<br />
		&nbsp;&nbsp;&nbsp; return (1)<br />
		end</p>
<p>		/* total size of device */<br />
		select d.name,<br />
		&nbsp;&nbsp;&nbsp; totalsizeMB = (1. + (d.high - d.low)) / @numpgsmb <br />
		&nbsp; into #totalsize<br />
		&nbsp;&nbsp;&nbsp; from master.dbo.sysdevices d<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; where d.status &amp; 2 = 2<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; and name like @devname<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; group by d.name</p>
<p>		/* Calculate used size in MB */<br />
		select d.name, <br />
		&nbsp;&nbsp;&nbsp; usedsizeMB = isnull(sum(u.size) / @numpgsmb2,0)<br />
		&nbsp; into #usedsize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
		&nbsp;&nbsp;&nbsp; from master.dbo.sysdevices d, master.dbo.sysusages u <br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; where u.vstart &gt;= d.low and u.vstart &lt;= d.high&nbsp;&nbsp;&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; and d.status &amp; 2 = 2<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; and d.name like @devname<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; group by d.name<br />
		union <br />
		select d.name, 0.<br />
		from master.dbo.sysdevices d <br />
		&nbsp; where not exists ( select 1 from master.dbo.sysusages u where u.vstart &gt;= d.low and u.vstart &lt;= d.high )<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and d.status &amp; 2 = 2<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and d.name like @devname</p>
<p>		set nocount off<br />
		/* Calculate the free size of device */<br />
		select d.name ,TotalSize = str(#totalsize.totalsizeMB,10,2), UsedSize = str(#usedsize.usedsizeMB,10,2),FreeSize = str(#totalsize.totalsizeMB - #usedsize.usedsizeMB,10,2),phyname = convert(varchar(50),d.phyname) <br />
		&nbsp; from master.dbo.sysdevices d, #totalsize, #usedsize<br />
		&nbsp; where&nbsp;&nbsp;&nbsp; d.name = #totalsize.name<br />
		&nbsp;&nbsp;&nbsp; and #totalsize.name = #usedsize.name<br />
		&nbsp; order by low,high</p>
<p>
		if (select count(*) from master.dbo.sysdevices where name like @devname) = 1 <br />
		begin <br />
		&nbsp;&nbsp;&nbsp; print &quot;&quot;<br />
		&nbsp;&nbsp;&nbsp; print &quot;========================== Allocate Information ==========================&quot;<br />
		&nbsp;&nbsp;&nbsp; /*if @Major_Version = 12<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; select dbname = db_name(dbid), &quot;size(MB)&quot;=str(size/@numpgsmb2,10,2), allocated = u.crdate, vstart, lstart <br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; from master.dbo.sysusages u, master.dbo.sysdevices d<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; where d.status &amp; 2 = 2 <br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and d.name like @devname<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and (u.vstart &gt;= d.low and u.vstart &lt;= d.high )<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; order by dbname,vstart<br />
		&nbsp;&nbsp;&nbsp; &nbsp;else if @Major_Version = 11 <br />
		&nbsp;&nbsp;&nbsp; &nbsp;*/<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; select dbname = db_name(dbid), &quot;size(MB)&quot;=str(size/@numpgsmb2,10,2), vstart, lstart <br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; from master.dbo.sysusages u, master.dbo.sysdevices d<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; where d.status &amp; 2 = 2 <br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and d.name like @devname<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and (u.vstart &gt;= d.low and u.vstart &lt;= d.high )<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; order by dbname,vstart</p>
<p>		end</p>
<p>		drop table #totalsize<br />
		drop table #usedsize<br />
		go</p>
<p>		/* grant the execute privilege to public */<br />
		grant execute on sp_helpdevice2 to public<br />
		go</p>
<p>		&nbsp;</p>
</blockquote>
<p>存储过程sp_helpdevice2的语法在此下载：<a href="https://www.dbainfo.net/wp-content/uploads/file/sp_helpdevice2.sql" target="_blank"><span style="font-size:14px;"><strong>sp_helpdevice2</strong></span></a></p>
<p>使用存储过程sp_helpdevice2的输出结果见下图所示：</p>
<p style="text-align: center;"><img alt="存储过程sp_helpdevice2的执行效果" height="504" src="https://www.dbainfo.net/wp-content/uploads/2011/08/view-sp_helpdevice2-result.jpg" width="605" /></p>
<p>最后，存储过程sp_helpdevice2仅输出了一些基本信息，像设备的状态信息等还请结合自带的sp_helpdevice进行查看。</p>
<p>在chinaunix的sybase板块有讨论此博文主题的帖子：<a href="http://bbs.chinaunix.net/viewthread.php?tid=3586168&amp;extra=&amp;page=1" target="_blank"><span>怎么查看设备文件上还有多少空间没有被分配出去</span></a></p>
<p>有什么建议欢迎在博文后面留言！</p>
<p><span style="color:#f00;"><span style="font-size:16px;">--更新： 2021-09-08<br />
	</span></span></p>
<p><span style="color:#f00;"><span style="font-size:16px;">增加显示设备ID，数据库ID，设备内偏移页号。<br />
	</span></span></p>
<blockquote>
<p>use sybsystemprocs<br />
		go</p>
<p>		if exists(select 1 from dbo.sysobjects where type=&#39;P&#39; and name=&#39;sp_helpdevice2&#39;)<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; drop procedure sp_helpdevice2<br />
		go</p>
<p>		/*<br />
		* 此存储过程在ASE v11.0.1, ASE v11.5.1, ASE v11.9.2, ASE v12.0, ASE v12.5, v12.5.0.3, v12.5.2, v12.5.4 平台测试通过！适用于 ASE v11.x, v12.x,不能用于ASE15。实际上ASE15.x中的sp_helpdevice完全能够实现该功能！<br />
		* ASE v11.x及ASE v12.0版本中系统表 sysusages中没有crdate这个表示设备段分配时间的字段，考虑到支持ASE v11.x为了简单处理，没有在Database Allocation information 中列出设备段的具体分配时间！<br />
		* ASE v11.x及ASE v12.0只支持2K页面，没有全局变量@@maxpagesize，需要手工替换本存储过程源码中的@@maxpagesize为@@pagesize！<br />
		*/<br />
		create procedure sp_helpdevice2<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @devname varchar(30) = &quot;%&quot;<br />
		as</p>
<p>		declare @numpgsmb float<br />
		declare @numpgsmb2 float<br />
		declare @Major_Version int<br />
		declare @Page2KMulti int</p>
<p>		set nocount on <br />
		--select @version_as_num = @@version_as_integer<br />
		select @Major_Version= convert(int, right(substring(@@version, 1, charindex(&#39;.&#39;, @@version) - 1), 2))<br />
		if @Major_Version &gt;= 15 or @Major_Version &lt; 11<br />
		begin <br />
		&nbsp;&nbsp;&nbsp; print &quot;this procedure is available for ASE versions from v11.x to v12.5.x, not for ASE15.x!&quot;<br />
		&nbsp;&nbsp;&nbsp; return (1)<br />
		end</p>
<p>		select @numpgsmb = (1048576. / @@pagesize)<br />
		select @numpgsmb2 = (1048576. / @@maxpagesize)<br />
		select @Page2KMulti = @@maxpagesize / 2048</p>
<p>		/*&nbsp; See if the device exists.*/<br />
		if not exists (select *<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; from master.dbo.sysdevices<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; where name like @devname)<br />
		begin<br />
		&nbsp;&nbsp;&nbsp; /* 17610, &quot;No such i/o device exists.&quot; */<br />
		&nbsp;&nbsp;&nbsp; raiserror 17610<br />
		&nbsp;&nbsp;&nbsp; return (1)<br />
		end</p>
<p>		/* total size of device */<br />
		select d.name,<br />
		&nbsp;&nbsp;&nbsp; totalsizeMB = (1. + (d.high - d.low)) / @numpgsmb <br />
		&nbsp; into #totalsize<br />
		&nbsp;&nbsp;&nbsp; from master.dbo.sysdevices d<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; where d.status &amp; 2 = 2<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; and name like @devname<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; group by d.name</p>
<p>		/* Calculate used size in MB */<br />
		select d.name, <br />
		&nbsp;&nbsp;&nbsp; usedsizeMB = isnull(sum(u.size) / @numpgsmb2,0)<br />
		&nbsp; into #usedsize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
		&nbsp;&nbsp;&nbsp; from master.dbo.sysdevices d, master.dbo.sysusages u <br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; where u.vstart &gt;= d.low and u.vstart &lt;= d.high&nbsp;&nbsp;&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; and d.status &amp; 2 = 2<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; and d.name like @devname<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; group by d.name<br />
		union <br />
		select d.name, 0.<br />
		from master.dbo.sysdevices d <br />
		&nbsp; where not exists ( select 1 from master.dbo.sysusages u where u.vstart &gt;= d.low and u.vstart &lt;= d.high )<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and d.status &amp; 2 = 2<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and d.name like @devname</p>
<p>		set nocount off<br />
		/* Calculate the free size of device */<br />
		select DevNo = d.low / power(2, 24), <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DevName = d.name, <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TotalSize = str(#totalsize.totalsizeMB, 10, 2), <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UsedSize = str(#usedsize.usedsizeMB, 10, 2), <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FreeSize = str(#totalsize.totalsizeMB - #usedsize.usedsizeMB, 10, 2), <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PhysName = convert(varchar(100), d.phyname) <br />
		&nbsp; from master.dbo.sysdevices d, #totalsize, #usedsize<br />
		&nbsp; where d.name = #totalsize.name<br />
		&nbsp;&nbsp;&nbsp; and #totalsize.name = #usedsize.name<br />
		&nbsp; order by low,high</p>
<p>
		if (select count(*) from master.dbo.sysdevices where name like @devname) = 1 <br />
		begin <br />
		&nbsp;&nbsp;&nbsp; print &quot;&quot;<br />
		&nbsp;&nbsp;&nbsp; print &quot;========================== Database Allocation Information ==========================&quot;<br />
		&nbsp;&nbsp;&nbsp; /*if @Major_Version = 12<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; select dbname = db_name(dbid), &quot;size(MB)&quot;=str(size/@numpgsmb2,10,2), allocated = u.crdate, vstart, lstart <br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; from master.dbo.sysusages u, master.dbo.sysdevices d<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; where d.status &amp; 2 = 2 <br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and d.name like @devname<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and (u.vstart &gt;= d.low and u.vstart &lt;= d.high )<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; order by dbname,vstart<br />
		&nbsp;&nbsp;&nbsp; &nbsp;else if @Major_Version = 11 <br />
		&nbsp;&nbsp;&nbsp; &nbsp;*/<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select u.dbid, dbname = db_name(u.dbid), <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;size(MB)&quot;=str(u.size / @numpgsmb2, 10, 2), <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u.vstart, <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (u.vstart&nbsp; - d.low) / @Page2KMulti as offsetpage, <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u.lstart <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from master.dbo.sysusages u, master.dbo.sysdevices d<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where d.status &amp; 2 = 2 <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and d.name like @devname<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and (u.vstart &gt;= d.low and u.vstart &lt;= d.high )<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; order by u.vstart<br />
		end</p>
<p>		drop table #totalsize<br />
		drop table #usedsize<br />
		go</p>
<p>		/* grant the execute privilege to public */<br />
		grant execute on sp_helpdevice2 to public<br />
		go<br />
		&nbsp;</p>
</blockquote>
<p>如果Sybase ASE 版本为v11.x及v12.0，只支持2K页面，没有全局变量@@maxpagesize，需要手工替换本存储过程源码中的@@maxpagesize为@@pagesize！</p>
<blockquote>
<p>use sybsystemprocs<br />
		go</p>
<p>		if exists(select 1 from dbo.sysobjects where type=&#39;P&#39; and name=&#39;sp_helpdevice2&#39;)<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; drop procedure sp_helpdevice2<br />
		go</p>
<p>		/*<br />
		* 此存储过程在ASE v11.0.1, ASE v11.5.1, ASE v11.9.2, ASE v12.0, ASE v12.5, v12.5.0.3, v12.5.2, v12.5.4 平台测试通过！适用于 ASE v11.x, v12.x,不能用于ASE15。实际上ASE15.x中的sp_helpdevice完全能够实现该功能！<br />
		* ASE v11.x及ASE v12.0版本中系统表 sysusages中没有crdate这个表示设备段分配时间的字段，考虑到支持ASE v11.x为了简单处理，没有在Database Allocation information 中列出设备段的具体分配时间！<br />
		* ASE v11.x及ASE v12.0只支持2K页面，没有全局变量@@maxpagesize，需要手工替换本存储过程源码中的@@maxpagesize为@@pagesize！<br />
		*/<br />
		create procedure sp_helpdevice2<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @devname varchar(30) = &quot;%&quot;<br />
		as</p>
<p>		declare @numpgsmb float<br />
		declare @numpgsmb2 float<br />
		declare @Major_Version int<br />
		declare @Page2KMulti int</p>
<p>		set nocount on <br />
		--select @version_as_num = @@version_as_integer<br />
		select @Major_Version= convert(int, right(substring(@@version, 1, charindex(&#39;.&#39;, @@version) - 1), 2))<br />
		if @Major_Version &gt;= 15 or @Major_Version &lt; 11<br />
		begin <br />
		&nbsp;&nbsp;&nbsp; print &quot;this procedure is available for ASE versions from v11.x to v12.5.x, not for ASE15.x!&quot;<br />
		&nbsp;&nbsp;&nbsp; return (1)<br />
		end</p>
<p>		select @numpgsmb = (1048576. / @@pagesize)<br />
		select @numpgsmb2 = (1048576. / <span style="color:#f00;">@@pagesize</span>)<br />
		select @Page2KMulti = <span style="color:#f00;">@@pagesize</span> / 2048</p>
<p>		/*&nbsp; See if the device exists.*/<br />
		if not exists (select *<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; from master.dbo.sysdevices<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; where name like @devname)<br />
		begin<br />
		&nbsp;&nbsp;&nbsp; /* 17610, &quot;No such i/o device exists.&quot; */<br />
		&nbsp;&nbsp;&nbsp; raiserror 17610<br />
		&nbsp;&nbsp;&nbsp; return (1)<br />
		end</p>
<p>		/* total size of device */<br />
		select d.name,<br />
		&nbsp;&nbsp;&nbsp; totalsizeMB = (1. + (d.high - d.low)) / @numpgsmb <br />
		&nbsp; into #totalsize<br />
		&nbsp;&nbsp;&nbsp; from master.dbo.sysdevices d<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; where d.status &amp; 2 = 2<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; and name like @devname<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; group by d.name</p>
<p>		/* Calculate used size in MB */<br />
		select d.name, <br />
		&nbsp;&nbsp;&nbsp; usedsizeMB = isnull(sum(u.size) / @numpgsmb2,0)<br />
		&nbsp; into #usedsize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
		&nbsp;&nbsp;&nbsp; from master.dbo.sysdevices d, master.dbo.sysusages u <br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; where u.vstart &gt;= d.low and u.vstart &lt;= d.high&nbsp;&nbsp;&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; and d.status &amp; 2 = 2<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; and d.name like @devname<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; group by d.name<br />
		union <br />
		select d.name, 0.<br />
		from master.dbo.sysdevices d <br />
		&nbsp; where not exists ( select 1 from master.dbo.sysusages u where u.vstart &gt;= d.low and u.vstart &lt;= d.high )<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and d.status &amp; 2 = 2<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and d.name like @devname</p>
<p>		set nocount off<br />
		/* Calculate the free size of device */<br />
		select DevNo = d.low / power(2, 24), <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DevName = d.name, <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TotalSize = str(#totalsize.totalsizeMB, 10, 2), <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UsedSize = str(#usedsize.usedsizeMB, 10, 2), <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FreeSize = str(#totalsize.totalsizeMB - #usedsize.usedsizeMB, 10, 2), <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PhysName = convert(varchar(100), d.phyname) <br />
		&nbsp; from master.dbo.sysdevices d, #totalsize, #usedsize<br />
		&nbsp; where d.name = #totalsize.name<br />
		&nbsp;&nbsp;&nbsp; and #totalsize.name = #usedsize.name<br />
		&nbsp; order by low,high</p>
<p>
		if (select count(*) from master.dbo.sysdevices where name like @devname) = 1 <br />
		begin <br />
		&nbsp;&nbsp;&nbsp; print &quot;&quot;<br />
		&nbsp;&nbsp;&nbsp; print &quot;========================== Database Allocation Information ==========================&quot;<br />
		&nbsp;&nbsp;&nbsp; /*if @Major_Version = 12<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; select dbname = db_name(dbid), &quot;size(MB)&quot;=str(size/@numpgsmb2,10,2), allocated = u.crdate, vstart, lstart <br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; from master.dbo.sysusages u, master.dbo.sysdevices d<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; where d.status &amp; 2 = 2 <br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and d.name like @devname<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and (u.vstart &gt;= d.low and u.vstart &lt;= d.high )<br />
		&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; order by dbname,vstart<br />
		&nbsp;&nbsp;&nbsp; &nbsp;else if @Major_Version = 11 <br />
		&nbsp;&nbsp;&nbsp; &nbsp;*/<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; select u.dbid, dbname = db_name(u.dbid), <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;size(MB)&quot;=str(u.size / @numpgsmb2, 10, 2), <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u.vstart, <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (u.vstart&nbsp; - d.low) / @Page2KMulti as offsetpage, <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u.lstart <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from master.dbo.sysusages u, master.dbo.sysdevices d<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where d.status &amp; 2 = 2 <br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and d.name like @devname<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and (u.vstart &gt;= d.low and u.vstart &lt;= d.high )<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; order by u.vstart<br />
		end</p>
<p>		drop table #totalsize<br />
		drop table #usedsize<br />
		go</p>
<p>		/* grant the execute privilege to public */<br />
		grant execute on sp_helpdevice2 to public<br />
		go<br />
		&nbsp;</p>
</blockquote>
<p>&nbsp;</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;&mdash;-</p>
<p>本文为andkylee个人原创，请在尊重作者劳动成果的前提下进行转载；</p>
<p>&mdash;- 转载务必注明原始出处 :<a href="../" target="_blank" title="http://www.dbainfo.net"> http://www.dbainfo.net</a></p>
<p>&mdash;- 关键字：&nbsp; ASE15之前版本 设备剩余空间 sp_helpdevice2</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;&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/get-free-space-of-device-and-database-allocation-prior-to-ase12-5.htm">https://www.dbainfo.net/get-free-space-of-device-and-database-allocation-prior-to-ase12-5.htm</a>；</li>
<li>本文为dbainfo个人原创，请在尊重作者劳动成果的前提下进行转载；</li>
<li>转载务必注明原始出处 : <a href="https://www.dbainfo.net/">Sybase数据库技术，数据库恢复专家</a>；</li>
<li>对《<a href="https://www.dbainfo.net/get-free-space-of-device-and-database-allocation-prior-to-ase12-5.htm">ASE15.x之前版本中查看设备剩余空间以及设备上数据库分配信息的存储过程</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>2012-10-19 -- <a href="https://www.dbainfo.net/ase-segment-spaceusage.htm" title="统计ASE数据库空间剩余率">统计ASE数据库空间剩余率</a> (2)</li><li>2011-03-21 -- <a href="https://www.dbainfo.net/sybase-ase-sp_spaceused-error-1151.htm" title="执行过程sp_spaceused的时候报error:1151">执行过程sp_spaceused的时候报error:1151</a> (0)</li><li>2010-10-22 -- <a href="https://www.dbainfo.net/oracle-view-table-physical-storage-size.htm" title="查看Oracle中表所有字段的字节总长度">查看Oracle中表所有字段的字节总长度</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-05-18 -- <a href="https://www.dbainfo.net/sqlserver2005-get-datafile-located-disk-freespace.htm" title="得到SQLSERVER 2005 数据库的当前数据库中的数据文件所在磁盘的剩余空间">得到SQLSERVER 2005 数据库的当前数据库中的数据文件所在磁盘的剩余空间</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>https://www.dbainfo.net/get-free-space-of-device-and-database-allocation-prior-to-ase12-5.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
