导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

恢复备份之后所有者就没有了?

fishpowersoft 2007-12-17 08:56:57
恢复sql的备份,怎么所有者全变成dbo了?? 如何恢复能带着原来的所有者啊?

因为程序中判断了所有者估计是,所有者一变就完蛋了...
...全文
84 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hui_hui_2007 2007-12-18
应该是原来的用户成为孤立用户了。
回复
-狙击手- 2007-12-17
IF OBJECT_ID('ChangeAll') IS NOT NULL DROP PROC ChangeAll
GO

CREATE PROCEDURE ChangeAll (
@old sysname,
@new sysname
)
AS
DECLARE @objname sysname

SET NOCOUNT ON

IF USER_ID(@old) IS NULL
BEGIN
RAISERROR ('The @old passed does not exist in the database', 16, 1)
RETURN
END
IF USER_ID(@new) IS NULL
BEGIN
RAISERROR ('The @new passed does not exist in the database', 16, 1)
RETURN
END

DECLARE owner_cursor CURSOR FOR

SELECT name FROM sysobjects WHERE uid = USER_ID(@old)
OPEN owner_cursor
FETCH NEXT FROM owner_cursor INTO @objname
WHILE (@@fetch_status <> -1)
BEGIN
SET @objname = @old + '.' + @objname
EXEC sp_changeobjectowner @objname, @new
FETCH NEXT FROM owner_cursor INTO @objname
END

CLOSE owner_cursor
DEALLOCATE owner_cursor
GO

EXEC ChangeAll @old = 'mis', @new = 'dbo'

转一个批量改表的所有者的过程

回复
-狙击手- 2007-12-17
原来的用户成了孤立用户

可使用存储过程sp_change_users_login。它有三种动作,分别是report,update_one和auto_fix。

运行sp_change_users_login 'report',系统会列出当前数据库的孤立用户数。

我们只需要选择当前数据库为testdb,然后运行

sp_change_users_login 'update_one','test','test'

系统就会提示修复了一个孤立用户。

  如果没有建立test的登录用户,还可以用sp_change_users_login 'Auto_Fix', 'test', NULL, 'testpassword'来创建一个登录用户名为test,密码为testpassword的用户与之对应。
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告