sybase扩库过程中中断了语句的执行,sp_helpdb DB_LC时报error

qq_31642561 2016-09-30 03:46:04
Error Page'4034560',passed to curunreservedpgs built-in function,is an invalid page number in databaseID'7'. The highest page number in this database is '4034559'.

起因是我检查数据库空间时发现DB_LC 库快满了,用disk resize +alter 给设备03扩充4GB (ps:设备03之前只剩1GB空间了),正常扩库10分钟左右就完成了,结果这次2个小时也没结束,sp_lock没有死锁进程,完了我就给中断了,结果再sp_helpdb DB_LC时就发现这个设备03上出现了我扩的4GB(ps:我明明中断了的),然后就报上面这个错误,找公司的大牛来也看不出什么问题,完了把数据库备份了,用dbcc checkdb检查了数据一致性也没什么问题,我估计等下周数据将设备03上原来的1GB写满了再想往我扩的4GB上写数据时,是不是才能出现问题啊,还想知道这个报错到底会影响什么呢?
...全文
1455 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
因为你的操作导致你的数据库出现空间分配问题了,可能会导致数据库丢失数据的风险。 估计下次重启数据库服务器的时候,这个数据库就无法正常打开了。 建议重建这个数据库。如果需要支持,可以联系QQ:289965371
//附加数据库 sp_attach_db 当使用 sp_attach_db 系统存储过程附加数据库时。 sp_attach_db:将数据库附加到服务器。 语法 sp_attach_db [ @dbname = ] 'dbname' , [ @filename1 = ] 'filename_n' [ ,...16 ] 参数 [@dbname =] 'dbname' 要附加到服务器的数据库的名称。该名称必须是唯一的。dbname 的数据类型为 sysname,默认值为 NULL。 [@filename1 =] 'filename_n' 数据库文件的物理名称,包括路径。filename_n 的数据类型为 nvarchar(260),默认值为 NULL。最多可以指定 16 个文件名。 参数名称以 @filename1 开始,递增到 @filename16。文件名列表至少必须包括主文件,主文件包含指向数据库其它文件的系统表。 该列表还必须包括数据库分离后所有被移动的文件。 返回代码值:0(成功)或 1(失败) eg:下面的示例将 pubs 的两个文件附加到当前服务器。 EXEC sp_attach_db @dbname = N'pubs', @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf' EXEC sp_attach_db @dbname = N'Ty20051029101451aaa', @filename1 = N'd:\5屏幕\Ty20051029101451aaa_data.mdf', @filename2 = N'd:\5屏幕\Ty20051029101451aaa_log.ldf' ---解决问题了 //删除数据库 DROP DATABASE 从Microsoft? SQL Server? 删除一个或多个数据库。删除数据库将删除数据库所使用的数据库文件和磁盘文件。 语法 :DROP DATABASE database_name [ ,...n ] 参数 :database_name 指定要删除的数据库名称。从 master 数据库执行 sp_helpdb 以查看数据库列表。 eg: exec sp_helpdb database_name exec Drpo DataBase [Ty20051029101451aaa] //分离数据库 可以使用 sp_detach_db 存储过程分离该数据库,然后使用带有 FOR ATTACH 子句的 CREATE DATABASE 重新附加。 sp_detach_db Archive GO CREATE DATABASE Archive ON PRIMARY (FILENAME = 'c:\program files\microsoft sqlserver\mssql\data\archdat1.mdf') FOR ATTACH GO //显示当前数据库信息 --select * from Master..sysDatabases //新建---不行啊 CREATE DATABASE TestOA ALTER DATABASE TestOA SET OFFLINE WITH ROLLBACK IMMEDIATE RESTORE DATABASE TestOA From disk='C:\Documents and Settings\Administrator\桌面\帐套\data\Template.Dat' ALTER DATABASE TestOA SET OFFLINE WITH ROLLBACK IMMEDIATE exec sp_detach_db Km20051030011601 --分离数据库 exec sp_attach_single_file_db km20051030011601,'D:\TestDatabase\Km20051030011601.mdf'--只附加.mdf文件
SQLServer考试题及答案 选择题: 1、在MS SQL Server,用来显示数据库信息的系统存储过程是( ) A sp_ dbhelp B sp_ db C sp_ help D sp_ helpdb 2、SQL语言,删除一个表的命令是( ) A DELETE B DROP C CLEAR D REMORE 3、关系数据库,主键是(__) A、为标识表唯一的实体 B、创建唯一的索引,允许空值 C、只允许以表第一字段建立 D、允许有多个主键的 4、在Transact-SQL语法,SELECT语句的完整语法较复杂,但至少包括的部分(1___),使用关键字(2___)可以把重复行屏蔽,将多个查询结果返回一个结果集合的运算符是(3___),如果在SELECT语句使用聚合函数时,一定在后面使用(4___)。 ⑴ A、SELECT,INTO B、SELECT,FROM C、SELECT,GROUP D、仅SELECT ⑵ A、DISTINCT B、UNION C、ALL D、TOP ⑶ A、JOIN B、UNION C、INTO D、LIKE ⑷ A、GROUP BY B、COMPUTE BY C、HAVING D、COMPUTE 5、语句DBCC SHRINKDATABASE (Sample, 25)的25表示的意思是 A、25M B、剩余占整个空间的25% C、已用空间占整个空间的25% D、以上都不对 6、你是一个保险公司的数据库开发人员,公司的保单信息存储在SQL Server 2000数据库,你使用以下脚本建立了一个名为Policy的表: CREATE TABLE Policy (PolicyNumber int NOT NULL DEFAULT (0), InsuredLastName char (30) NOT NULL, InsuredFirstName char (20) NOT NULL, InsuredBirthDate datetime NOT NULL, PolicyDate datetime NOT NULL, FaceAmount money NOT NULL, CONSTRAINT PK_Policy PRIMARY KEY (PolicyNumber) ) 每次公司销售出一份保单,Policy表就增加一条记录,并赋予其一个新的保单号,你将怎么做? a.建立一个INSTEAD OF INSERT触发器来产生一个新的保单号,并将这个保单号插入数据表。 b.建立一个INSTEAD OF UPDATE触发器来产生一个新的保单号,并将这个保单号插入数据表。 c.建立一个AFTER UPDATE触发器来产生一个新的保单号,并将这个保单号插入数据表。 d.用AFTER UPDATE触发器替代DEFAULT约束条件产生一个新的保单号,并将这个保单号插入数据表

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧