﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-负人博客-随笔分类-数据库</title><link>http://www.blogjava.net/cader/category/12830.html</link><description>要想负多生孩子少种树</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 21:00:42 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 21:00:42 GMT</pubDate><ttl>60</ttl><item><title>MSSQL恢复别人备份引起的问题解决！</title><link>http://www.blogjava.net/cader/archive/2006/07/20/59243.html</link><dc:creator>负人博客</dc:creator><author>负人博客</author><pubDate>Thu, 20 Jul 2006 09:22:00 GMT</pubDate><guid>http://www.blogjava.net/cader/archive/2006/07/20/59243.html</guid><wfw:comment>http://www.blogjava.net/cader/comments/59243.html</wfw:comment><comments>http://www.blogjava.net/cader/archive/2006/07/20/59243.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cader/comments/commentRss/59243.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cader/services/trackbacks/59243.html</trackback:ping><description><![CDATA[
		<p>
				<span class="javascript" id="text3047530" style="FONT-SIZE: 12px">
						<font face="Verdana">
								<font color="#006400" size="4">
										<strong>问题描述：</strong>
								</font>
								<br />    <font size="2">   </font><font size="3">我恢复别人备份在别的机器上的SQL数据库到我的机器上的SQL SERVER，恢复后该数据库中有一个mis用户，该用户是所有者，很多表的所有者也是他，但我的安全性里的登录中没有该用户，我删除不了该用户，提示“因为选定的用户拥有对象，所以无法除去该用户”！<br /></font><font color="#006400" size="4"><strong>问题解决方式：<br /></strong><font size="2">     <font size="3"><strong> 1 如果是一张表有此问题，解决方式如下：<br /></strong></font>       <br /></font><font color="#000000"><font size="3">       exec <span style="COLOR: #000000">sp_changeobjectowner </span><span style="COLOR: #ff0000">mis</span><span style="COLOR: #ff0000">.tablename</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">dbo</span></font><span style="COLOR: #ff0000"><font size="3">'<br />     <br /></font><font size="3"><font color="#000000">       这样就把tablename指定的表的所有者赋值给了dbo用户<br /><br />  </font><font color="#006400"><strong>   2 如果所有表都存在此问题，这是就要编写存储过程实现批量修改了<br /></strong><font color="#000000">       <br />         IF OBJECT_ID('ChangeAll') IS NOT NULL DROP PROC ChangeAll<br />         GO</font></font></font></span></font></font></font>
				</span>
		</p>
		<p>
				<span class="javascript" style="FONT-SIZE: 12px">
						<font face="Verdana">
								<font size="4">
										<font size="+0">
												<span style="COLOR: #ff0000">
														<font size="3">
																<font color="#000000">         CREATE PROCEDURE ChangeAll (<br />             @old sysname,<br />             @new sysname<br />         )<br />        AS<br />             DECLARE @objname sysname</font>
														</font>
												</span>
										</font>
								</font>
						</font>
				</span>
		</p>
		<p>
				<span class="javascript" style="FONT-SIZE: 12px">
						<font face="Verdana">
								<font size="4">
										<font size="+0">
												<span style="COLOR: #ff0000">
														<font size="3">
																<font color="#000000">             SET NOCOUNT ON</font>
														</font>
												</span>
										</font>
								</font>
						</font>
				</span>
		</p>
		<p>
				<span class="javascript" style="FONT-SIZE: 12px">
						<font face="Verdana">
								<font size="4">
										<font size="+0">
												<span style="COLOR: #ff0000">
														<font size="3">
																<font color="#000000">             IF USER_ID(@old) IS NULL<br />                BEGIN<br />                    RAISERROR ('The @old passed does not exist in the database', 16, 1)<br />                    RETURN<br />                END<br />             IF USER_ID(@new) IS NULL<br />                BEGIN<br />                    RAISERROR ('The @new passed does not exist in the database', 16, 1)<br />                    RETURN<br />                END</font>
														</font>
												</span>
										</font>
								</font>
						</font>
				</span>
		</p>
		<p>
				<span class="javascript" style="FONT-SIZE: 12px">
						<font face="Verdana">
								<font size="4">
										<font size="+0">
												<span style="COLOR: #ff0000">
														<font size="3">
																<font color="#000000">             DECLARE owner_cursor CURSOR FOR </font>
														</font>
												</span>
										</font>
								</font>
						</font>
				</span>
		</p>
		<p>
				<span class="javascript" style="FONT-SIZE: 12px">
						<font face="Verdana">
								<font size="4">
										<font size="+0">
												<span style="COLOR: #ff0000">
														<font size="3">
																<font color="#000000">             SELECT name FROM sysobjects WHERE uid = USER_ID(@old)<br /></font>
														</font>
												</span>
										</font>
								</font>
						</font>
				</span>
				<span class="javascript" style="FONT-SIZE: 12px">
						<font face="Verdana">
								<font size="4">
										<font size="+0">
												<span style="COLOR: #ff0000">
														<font size="3">
																<font color="#000000">             OPEN owner_cursor<br />             FETCH NEXT FROM owner_cursor INTO @objname<br />             WHILE (@@fetch_status &lt;&gt; -1)<br />                 BEGIN<br />                     SET @objname = @old + '.' + @objname<br />                     EXEC sp_changeobjectowner @objname, @new<br />                     FETCH NEXT FROM owner_cursor INTO @objname<br />                 END</font>
														</font>
												</span>
										</font>
								</font>
						</font>
				</span>
		</p>
		<p>
				<span class="javascript" style="FONT-SIZE: 12px">
						<font face="Verdana">
								<font size="4">
										<font size="+0">
												<span style="COLOR: #ff0000">
														<font size="3">
																<font color="#000000">            CLOSE owner_cursor<br />            DEALLOCATE owner_cursor<br />            GO</font>
														</font>
												</span>
										</font>
								</font>
						</font>
				</span>
		</p>
		<p>
				<span class="javascript" style="FONT-SIZE: 12px">
						<font face="Verdana">
								<font size="4">
										<font size="+0">
												<span style="COLOR: #ff0000">
														<font size="3">
																<font color="#000000">EXEC ChangeAll @old = 'mis', @new = 'dbo'<br /><br /><font color="#006400">这样就完成了批量修改权限的工作<br /></font><br />详细信息请参考：<a href="http://www.itpub.net/429496.html">http://www.itpub.net/429496.html</a><br /></font>
														</font>
												</span>
										</font>
								</font>
						</font>
				</span>
		</p>
<img src ="http://www.blogjava.net/cader/aggbug/59243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cader/" target="_blank">负人博客</a> 2006-07-20 17:22 <a href="http://www.blogjava.net/cader/archive/2006/07/20/59243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>