mssql2000升级到SQLServer2005数据库中更改数据架构方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mssql2000升级到SQLServer2005数据库中更改数据架构方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2147字,纯文字阅读大概需要4分钟。
内容图文
![mssql2000升级到SQLServer2005数据库中更改数据架构方法](/upload/InfoBanner/zyjiaocheng/544/3f8d01530525460581e7f11e5d08f7bc.jpg)
数据库升级到 mssql 2005 了,我对 2005 不熟悉,发现还原 2000 的数据以前的用户名删除不了,报 Microsoft SQL Server错误: 15138。
在网上找到:SQL Server 2005删除用户失败解决方法(15138错误)?
?Microsoft SQL Server错误: 15138删除对于用户失败,数据库主体在该数据库中拥有架构,无法删除。
删除 对于 用户“*****”失败。 (Microsoft.SqlServer.Smo)
其他信息:
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)
解决方法一
先删除此用户对应的架构,然后在删除对应的用户
步骤
代码如下 | |
1。SQL SERVER MANAGEMENT STUDIO -> 数据库 -> 安全性 -> 构架,先删除对应的构架 2。SQL SERVER MANAGEMENT STUDIO -> 数据库 -> 安全性 -> 用户,删除对应的用户 |
解决方法二
–执行如下SQL语句
ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo;
–然后手动删除就可以了。?
在这里又出现构架也删除不了,原因有一个表的构架不是 dbo 了,得改为 dbo 才行。
在数据库testDB中存在架构A及用户A,现将testDB数据库所属的用户由A改为B,同时删除用户A;
架构也由A改为B,删除架构A,操作如下:
1、创建用户B,再创建架构B;
2、将架构A的权限赋给用户B,取消用户A拥有架构A的权限,删除用户A;
3、将数据库的所有属于架构A的对象改为架构B,代码如下:
ALTER SCHEMA [新架构名] TRANSFER 旧架构名.[数据库中的对象表或视图或存储过程]
ALTER SCHEMA [B] TRANSFER A.[对象1]
ALTER SCHEMA [B] TRANSFER A.[对象2]
ALTER SCHEMA [B] TRANSFER A.[对象n] ?
而当要更改一个数据库中全部的表或存储过程时,用上面的方法是可以实现,但是速度太慢了,所以写了一个存储过程批量修改:
改存储过程:
代码如下 | |
USE [testDemo] -- --ALTER SCHEMA slqwell TRANSFER create table #t ( ID int IDENTITY (1,1) not null, --创建列ID,并且每次新增一条记录就会加1 procName varchar(100), ) insert into #t(procName) select 'dbo.' +name from sysobjects where xtype='P' and status>=0 select * from #t declare @i int declare @j int set @j = 1 declare @procName varchar(100) declare @SchemaTable varchar(200) while(@j < (@i + 1)) begin select @procName=procName from #t where ID=@j set @j = @j + 1 set @SchemaTable = 'ALTER SCHEMA sqlwell TRANSFER ' + @procName exec (@SchemaTable) end drop table #t |
其中原来的架构为代表dbo,先的为sqlwell
要修改表的架构时,只要修改上面的xtype='P' 为xtype='U' ?
内容总结
以上是互联网集市为您收集整理的mssql2000升级到SQLServer2005数据库中更改数据架构方法全部内容,希望文章能够帮你解决mssql2000升级到SQLServer2005数据库中更改数据架构方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。