Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 General SQL Server Forums
 Data Corruption Issues
 SQL Error 8908

Author  Topic 

AskSQLTeam
Ask SQLTeam Question

0 Posts

Posted - 2006-05-24 : 07:44:03
Unes writes "Hi,
In my SQL database I can not view or DELETE one of my procedure. I do not know what happened to my procedure. I get the following error:

Error 8908: Table Error: Database ID 7, Object ID 6, Index ID 0. Chain Linkage Mismatch.
--(1:309) --> Next = (1:376), but (1:376) --> prev = (1:414)

I appreciate your help.
Unes"

harshal_in
Aged Yak Warrior

633 Posts

Posted - 2006-05-25 : 06:45:51
http://support.microsoft.com/kb/811205


Go to Top of Page

paulrandal
Yak with Vast SQL Skills

899 Posts

Posted - 2006-05-25 : 12:15:54
quote:
Originally posted by harshal_in

http://support.microsoft.com/kb/811205



That's got nothing to do with it - Object ID 6 is not sysfiles1, as explained in the KB article you mentioned. Object ID 6 is syscomments, which holds SP definitions, which is why this error occured (I'm guessing) when Unes tried to delete the SP.

Unes,

Can you post the output of:

DBCC CHECKDB (yourdb) WITH ALL_ERRORMSGS, NO_INFOMSGS

What version + SP level are you using?

Did anything unusual happen before this? Any IO errors in the SQL errorlog or Windows event log?

Thanks


Paul Randal
Lead Program Manager, Microsoft SQL Server Storage Engine + SQL Express
(Legalese: This posting is provided "AS IS" with no warranties, and confers no rights.)
Go to Top of Page

Unes
Starting Member

8 Posts

Posted - 2006-05-31 : 10:07:17
Sometimes for update purposes I replace my db file from my Notebook to my PC and vice versa.
I did not recieve any error message before. Quite by accident I checked this procedure and I saw the error. Now I noticed this error exists on few sp.
I am using SQL 2000 with SP4.
I have already seen the Microsoft article, they identify the Error, but I did not see a solution which I could use for my problem.

I appreciate your input.

I run DBCC CHECKDB (ItemsSoftware)

Server: Msg 8978, Level 16, State 1, Line 1
Table error: Object ID 6, index ID 1. Page (1:91) is missing a reference from previous page (1:334). Possible chain linkage problem.
Server: Msg 8981, Level 16, State 1, Line 1
Table error: Object ID 6, index ID 1. The next pointer of (1:334) refers to page (1:177). Neither (1:177) nor its parent were encountered. Possible bad chain linkage.
Server: Msg 8934, Level 16, State 1, Line 1
Table error: Object ID 6, index ID 1. The high key value on page (1:309) (level 0) is not less than the low key value in the parent (0:1), slot 0 of the next page (1:376).
Server: Msg 8935, Level 16, State 1, Line 1
Table error: Object ID 6, index ID 1. The previous link (1:414) on page (1:376) does not match the previous page (1:309) that the parent (1:51), slot 108 expects for this page.
Server: Msg 8936, Level 16, State 1, Line 1
Table error: Object ID 6, index ID 1. B-tree chain linkage mismatch. (1:309)->next = (1:376), but (1:376)->Prev = (1:414).
Server: Msg 8978, Level 16, State 1, Line 1
Table error: Object ID 6, index ID 1. Page (1:549) is missing a reference from previous page (1:376). Possible chain linkage problem.
Go to Top of Page

Unes
Starting Member

8 Posts

Posted - 2006-05-31 : 12:47:11
Article
http://doc.ddart.net/mssql/sql2000/html/trblsql/tr_reslsyserr_2_2coj.htm

explains more thoroughly the causes of the error. Based on this article the problem lays on the table which the proc is working on. But amazingly my table is fine!
Select * from Dealers where Dealer = 'Aeffi'
present the data no problem, But
pr_Dealers @ProcCode = 'Find', @Dealer = 'Aeffi'
which suppose to present the same data gives the following error:

Server: Msg 8908, Level 22, State 6, Procedure pr_Dealers, Line 1
Table error: Database ID 7, object ID 6, index ID 0. Chain linkage mismatch. (1:334)->next = (1:177), but (1:177)->prev = (1:409).

Connection Broken
Go to Top of Page

Unes
Starting Member

8 Posts

Posted - 2006-05-31 : 13:30:15
The following is the Error log

2006-05-31 09:56:01.59 spid54 Expected to find buffer in keep slot for table 'syscomments'..
2006-05-31 09:56:01.59 spid54 Error: 655, Severity: 20, State: 2
2006-05-31 09:56:01.59 spid54 Table error: Database ID 7, object ID 6, index ID 0. Chain linkage mismatch. (1
2006-05-31 09:56:01.59 spid54 Error: 8908, Severity: 22, State: 6
2006-05-31 10:19:24.90 spid52 Expected to find buffer in keep slot for table 'syscomments'..
2006-05-31 10:19:24.90 spid52 Error: 655, Severity: 20, State: 2
2006-05-31 10:19:24.90 spid52 Table error: Database ID 7, object ID 6, index ID 0. Chain linkage mismatch. (1
2006-05-31 10:19:24.90 spid52 Error: 8908, Severity: 22, State: 6
2006-05-31 10:21:57.08 spid52 Expected to find buffer in keep slot for table 'syscomments'..
2006-05-31 10:21:57.08 spid52 Error: 655, Severity: 20, State: 2
2006-05-31 10:21:57.08 spid52 Table error: Database ID 7, object ID 6, index ID 0. Chain linkage mismatch. (1
2006-05-31 10:21:57.08 spid52 Error: 8908, Severity: 22, State: 6
Go to Top of Page

Unes
Starting Member

8 Posts

Posted - 2006-05-31 : 14:29:27
The result for the following command was: "The command(s) completed successfully."

DBCC CHECKTABLE (sysobjects) WITH NO_INFOMSGS
go
DBCC CHECKTABLE (sysindexes) WITH NO_INFOMSGS
go
DBCC CHECKTABLE (syscolumns) WITH NO_INFOMSGS
go
DBCC CHECKTABLE (systypes) WITH NO_INFOMSGS
go

Go to Top of Page

paulrandal
Yak with Vast SQL Skills

899 Posts

Posted - 2006-05-31 : 15:10:46
quote:
Originally posted by Unes

Article
http://doc.ddart.net/mssql/sql2000/html/trblsql/tr_reslsyserr_2_2coj.htm

explains more thoroughly the causes of the error. Based on this article the problem lays on the table which the proc is working on. But amazingly my table is fine!
Select * from Dealers where Dealer = 'Aeffi'
present the data no problem, But
pr_Dealers @ProcCode = 'Find', @Dealer = 'Aeffi'
which suppose to present the same data gives the following error:

Server: Msg 8908, Level 22, State 6, Procedure pr_Dealers, Line 1
Table error: Database ID 7, object ID 6, index ID 0. Chain linkage mismatch. (1:334)->next = (1:177), but (1:177)->prev = (1:409).

Connection Broken



You're misinterpreting that article (which I wrote) - and you're better to pull that stuff from MSDN directly rather than from a 3rd party site that's copied it so that you get the latest updates.

The 8908 error explains which table the problem is in - in this case its in object ID 6, which is syscomments. Syscomments holds all the text of SPs, and so when you invoke your SP its trying to look through syscomments to find the text of your SP and hits the 8908 error.

Do you have a backup that you can restore from?

When you move the DB file between the two machines, exactly how do you do that?

Paul Randal
Lead Program Manager, Microsoft SQL Server Storage Engine + SQL Express
(Legalese: This posting is provided "AS IS" with no warranties, and confers no rights.)
Go to Top of Page

Unes
Starting Member

8 Posts

Posted - 2006-05-31 : 18:25:57
I did read the following article too:
http://support.microsoft.com/kb/811205

This is a small database, so occasionally I saved copies of the

ItemsSoftware_Data.MDF
ItemsSoftware_Log.LDF

files in some other folder. But I never created the BackUp through the SQL Server.

I can attach these other db files to recover my sp scripts.

I used a cross over cable to transfer my files between the two computers.

Thank you Paul Randal for your efforts,
Unes
Go to Top of Page

paulrandal
Yak with Vast SQL Skills

899 Posts

Posted - 2006-06-01 : 00:10:25
As I mentioned above, http://support.microsoft.com/kb/811205 isn't relevant to your issue, even though the error number is the same.

Given that you don't have a backup, you'll need to run repair on the syscomments table or extract the data out into a clean database - your choice depending on how easy it is to extract the data.

Paul Randal
Lead Program Manager, Microsoft SQL Server Storage Engine + SQL Express
(Legalese: This posting is provided "AS IS" with no warranties, and confers no rights.)
Go to Top of Page

cmdr_skywalker
Posting Yak Master

159 Posts

Posted - 2006-06-01 : 03:56:18
Try this and see if it will give some insight. EXEC sp_change_users_login 'Report'

May the Almighty God bless us all!
Go to Top of Page

Unes
Starting Member

8 Posts

Posted - 2006-06-01 : 13:34:31
Hi Paul Randal,
How can I run repair on the syscomments table?
Is there a way that I can look at or alter the content of syscomments table?

Thanks for your advice.



Hi cmdr_skywalker,
The following is the output of EXEC sp_change_users_login 'Report'
I have no clue how I should use the information.

UserName UserSID
---------------------- -------------------------------------
dbo 0xDDB1E79F428E0D4EB54A3216710C6564
ItemsSoftwareApp 0x13AA5E0BC5EF0649AE07079475A8BB96
Main Street 0xC185A01D012BB84CB1C317D3BBFCAD3B
Unes 0x18C04BF498E0E34A9CAB26F2A129485E
Go to Top of Page

Unes
Starting Member

8 Posts

Posted - 2006-06-01 : 13:47:23
Hi Paul Randal,

If I could delete those procs from syscomments table that would be fine.
Because the way it is, I am stuck with those corrupted procs.

By the way, what could be the cause of the problem?

Thanks for your advice.

Go to Top of Page

paulrandal
Yak with Vast SQL Skills

899 Posts

Posted - 2006-06-01 : 15:49:14
We're not making much timely progress here - I could walk you through what to do but going back and forth like this is going to take days.

I suggest you call Product Support to help you run repair and recreate your SP.

Thanks

Paul Randal
Lead Program Manager, Microsoft SQL Server Storage Engine + SQL Express
(Legalese: This posting is provided "AS IS" with no warranties, and confers no rights.)
Go to Top of Page
   

- Advertisement -