`

修改mssql2000的所有者为dbo

阅读更多

修改mssql2000的所有者

 

       我们一般在mssql2000中建立数据库时,会给其数据库建立一个单独的用户名供其独立使用,这样可以让数据库更安全。但是在我们进行数据库迁移时,由于数据库中表和存储过程的所有者为另外一个单独的用户名而不是dbo,这样会造成使用中出现问题。先不管出什么问题,我们只需要统一把数据库中的表和存储过程的所有者统一改成dbo,那问题就可以迎刃而解。


      修改mssql2000的表所有者为dbo,只需要执行以下语句既可:
EXEC sp_MSforeachtable 'exec sp_changeobjectowner ''当前用户名'',''dbo''

修改mssql2000的存储过程所有者为dbo,首先需要建立一个存储过程,存储过程名为ChangeProcOwner,ChangeProcOwner的语句如下:
Create PROCEDURE ChangeProcOwner
@OldOwner as NVARCHAR(128),--参数原所有者
@NewOwner as NVARCHAR(128)--参数新所有者
AS

DECLARE @Name as NVARCHAR(128)
DECLARE @Owner as NVARCHAR(128)
DECLARE @OwnerName as NVARCHAR(128)

DECLARE curObject CURSOR FOR
select 'Name' = name,
'Owner' = user_name(uid)
from sysobjects
where user_name(uid)=@OldOwner and xtype='p'
order by name

OPEN curObject
FETCH NEXT FROM curObject INTO @Name, @Owner
WHILE(@@FETCH_STATUS=0)
BEGIN
if @Owner=@OldOwner
begin
set @OwnerName = @OldOwner + '.' + rtrim(@Name)
exec sp_changeobjectowner @OwnerName, @NewOwner
end

FETCH NEXT FROM curObject INTO @Name, @Owner
END

close curObject
deallocate curObject
GO

建立完ChangeProcOwner存储过程后,只需要执行以下语名即可:
exec ChangeProcOwner '当前用户名','dbo'

至此,我们的数据库迁移工作基本完成,也不会出什么问题了。

 

分享到:
评论

相关推荐

    关于MYSQL的练习习题集合

    "MYSQL练习习题集合" ...本资源摘要信息涵盖了MYSQL的基本概念、数据库设计原则、SQL语句基础、SELECT语句、CASE WHEN语句、FROM子句、连接查询和WHERE子句等知识点,为学习者提供了一个系统的学习资源。

    此数据库没有有效所有者,因此无法安装数据库关系图支持对象

    这是一种直接修改数据库所有者的方法。通过运行`ALTER AUTHORIZATION ON DATABASE::mydbname TO sa`,其中`mydbname`替换为实际的数据库名称,可以将数据库所有者设置为内置管理员账号`sa`。需要注意的是,`sa`账户...

    dbo.countshoppingcartitem.rar_存储过程

    结合"dbo.shoppingcarttotalcost",它们共同提供了对用户购物车状态的全面了解,为用户提供了一流的购物体验。理解和掌握这些存储过程的使用,对于数据库管理员和后端开发人员来说,是提升业务效率的关键技能。

    CISP-PTE-数据库安全.pptx

    * 数据库所有者:数据库所有者(DBO)是数据库的创建者,每个数据库只有一个数据库所有者。DBO 有数据库中的所有特权,可以提供给其他用户访问权限。 * 数据库对象:数据库对象包含表、索引、视图、触发器、规则和...

    全国小区信息数据库

    `dbo`是SQL Server中默认的数据库所有者(schema),`zyd_`可能是数据库的项目或公司代码前缀。 `1.dbo.zyd_districts_copy.Table.sql`可能代表“区域”或“行政区划”的表,其中包含了中国各级行政区域的数据,如...

    智能开发平台 DOROODO

    +++++++++++++++++++[doroodo_defult.properties]中几个需要改的部分+++++++++++++++++++ hibernate.default_schema=doroodo ---->mysql中指到数据库名,sqlserver中指到数据库所有者,如dbo jdbc.url=jdbc:mysql://...

    数据库实验1-6参考答案.doc

    用户分为不同类别,如dbo是默认的数据库所有者,拥有全部权限,而Guest则是为未明确定义登录提供基本访问的用户。 5. **角色和登录安全**:查看数据库中的角色,了解它们的角色类型(如sysadmin、db_owner等),...

    数据库实验1-6参考答案.docx

    5. 用户类型可能包括dbo(数据库所有者)和Guest(来宾用户)。dbo拥有数据库的全部权限,而Guest只具有有限的访问权限。 6. 角色类型可能包括固定服务器角色(如sysadmin、dbcreator等)和自定义角色。角色定义了...

    手工注入常用SQL语句.txt

    - `and (Select IS_MEMBER('db_owner'))`:检查当前用户是否属于数据库所有者角色。 - `union select name from master.dbo.sysdatabases where dbid = 11`:列出特定ID为11的数据库名称。 - `union select top 1 ...

    数据库原理实验指导书-参考答案.doc

    3. 表和视图:观察表的所有者(如dbo、用户等)、类型(如用户表、系统表)和创建日期,理解数据的实际含义。视图是预定义的SQL查询结果,可以提供不同视角的数据。 4. 用户和角色:识别不同类型的用户,比较其属性...

    MSsqlL注入取得网站路径最好的方法.txt

    在网络安全领域,SQL注入是一种常见的攻击手段,攻击者通过在数据库查询中插入恶意SQL语句来获取敏感信息或执行非法操作。其中,针对Microsoft SQL Server(简称MS SQL)的注入攻击尤为常见。本文将详细探讨MSsqlL...

    数据库原理实验指导书_参考答案.doc

    5. **用户和角色的了解** 包括识别不同类型的用户(如系统用户和普通用户)以及他们的权限和角色(如dbo是默认的数据库所有者,Guest用户通常有受限的访问权限)。角色(如db_owner、db_datareader等)定义了特定...

    sql 语句 取数据库服务器上所有数据库的名字

    `dbo`是默认的数据库所有者(schema),而`sysdatabases`是一个包含所有数据库信息的系统视图,其中`name`字段表示数据库的名称。 2. **获取所有非系统数据库名**: ```sql SELECT [name] FROM master.dbo....

    DB权限暴出网站物理路径代码.txt

    通过设置不同级别的权限,管理员可以确保只有授权用户才能执行特定操作,比如读取、修改或删除数据。这种机制有助于保护数据免受未授权访问和潜在的安全威胁。 ### 代码分析 #### 1. 创建临时表 ```sql 1...

    SQL 笔试题

    - **数据库角色与权限**: `dbo`(database owner)是数据库的所有者,拥有最高权限;`sysadmin`是系统管理员角色;`public`是默认的用户角色,授予所有用户基本的访问权限。 ### 6. 数据输入与SQL执行 - **数据...

    sqlserver2005学习笔记.

    默认情况下,数据库的所有者是这个角色的成员。拥有这个角色的用户可以执行数据库中的任何操作,包括创建、修改和删除对象等。 #### SQL Server备份与恢复 - **备份数据库**:在SQL Server 2005中备份数据库时,...

    SQL注入中绕过 单引号 限制继续注入

    SQL注入是一种常见的网络安全攻击手段,攻击者通过在Web表单输入或URL查询字符串中输入恶意SQL代码片段,试图对数据库执行非授权的操作。本文主要讨论的是在SQL注入过程中,如何绕过单引号限制以继续注入攻击,以及...

Global site tag (gtag.js) - Google Analytics