Solved

Cannot Detach Distribution Database

Posted on 2008-06-19
5
1,846 Views
Last Modified: 2008-06-19
I do not have ANY replication defined on the instance.  None of the Agents are active.  When I try to detach the distribution database I get the message that it cannot be detached because it is being replicated.

I think someone may have been playing with replication in the past and did not clean up after themselves. :( :(

Is there a flag somewhere that I can clear to get rid of this message??  I really need to move the database.

Thank You
0
Comment
Question by:DonKronos
  • 3
  • 2
5 Comments
 
LVL 31

Expert Comment

by:James Murrell
ID: 21826457
In versions of SQL Server prior to SQL Server 2005, moving or renaming database files required detaching and reattaching the database. Because a replicated database cannot be detached, replication had to be removed from these databases first. Beginning with SQL Server 2005, you can move or rename files without detaching and re-attaching the database, with no effect on replication. For more information about moving and renaming files, see ALTER DATABASE (Transact-SQL).

from http://technet.microsoft.com/en-us/library/ms151740(SQL.100).aspx

also
For Replication Disable..... you click on the replicated database, use
followin menu path

TOOLS --> REPLICATION --> DISABLE PUBLISHING ....

OR alternatively you can use sp_removedbreplication stored procedure.



0
 
LVL 15

Author Comment

by:DonKronos
ID: 21826674
Thanks CS, but here is the problem ...  the database is NOT being replicated.  For the entire instance, there are NO Publishers, No Subscribers, NO Items in any of the Agents, but when I try to detach the database it still says that it is being replicated.  :(

I have looked through master, msdb and distribution and cannot find any "leftover" entries that were not cleared.  However, there has to be something someplace that makes SQl Server think the database is being replicated ???

I select the database in Enterprise Manager and went to TOOLS --> REPLICATION  and the Disable Publishing ...  was greyed out.

Any ideas???
0
 
LVL 31

Accepted Solution

by:
James Murrell earned 500 total points
ID: 21826846
did you run the sp_removedbreplication stored procedure

also check maintenance plans, could be there
0
 
LVL 15

Author Comment

by:DonKronos
ID: 21826892
Yes I ran sp_removedbreplication.

I did find the following:

Database:  master
Table:  sysdatabases
Column: category

For the distribution database, the column has a value of 16.  For all other databases, the column has a value of 0 (zero).  I'm trying to find out what the values in that column mean and how to change them if needed.

I will look in the maintenance plan but it is very simple, i.e., backup all databases everynight at 02:00.

Thanks
0
 
LVL 15

Author Comment

by:DonKronos
ID: 21827035
CS  ...  FOUND THE ANSWER !!!! :) :) :)

From this link I found the meaning of the category column.

http://msdn.microsoft.com/en-us/library/aa260406(SQL.80).aspx

A value of 16 means that the database is involved in both as a publisher and subscriber and something else.  Anyway, there must have been a problem when people were "playing" with the database and the value did not get reset.  

To change the value I did the following.

USE master
GO
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO
update sysdatabases set category = 0 where category = 16
GO
sp_configure 'allow updates', 0
GO
RECONFIGURE WITH OVERRIDE
GO

I then detached; moved the database; attached the database and everything is FINE.  :) :)

Thanks for your assistance and making me think. :)  
0

Featured Post

Free learning courses: Active Directory Deep Dive

Get a firm grasp on your IT environment when you learn Active Directory best practices with Veeam! Watch all, or choose any amount, of this three-part webinar series to improve your skills. From the basics to virtualization and backup, we got you covered.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

JSON is being used more and more, besides XML, and you surely wanted to parse the data out into SQL instead of doing it in some Javascript. The below function in SQL Server can do the job for you, returning a quick table with the parsed data.
Load balancing is the method of dividing the total amount of work performed by one computer between two or more computers. Its aim is to get more work done in the same amount of time, ensuring that all the users get served faster.
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
Viewers will learn how to use the INSERT statement to insert data into their tables. It will also introduce the NULL statement, to show them what happens when no value is giving for any given column.

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question