把sql server 用户表的所有者修改为dbo的解决方法
2012-06-21 17:16
267 查看
最近因系统中数据访问用户不是dba,用的其他用户,导致后台建表时用户表所有者不是dbo,出现这种情况后,如果数据访问用户发生变化后导致系统功能不能正常使用。
特搜索了一下修改用户表所有者为dbo的解决方法。总结一下供需要之用。
解决方法一:从企业管理器中直接操作
a、打开企业管理器----找到你的用户名不对的表
b、然后右键点击该表-》设计表,在上面的一排小图标中,点最后一个“条件约束”
c、点“表”页,在里面更改所有者。
更改所有者为dbo,保存即可。
解决方案二:通过sql语句执行
sql server 2000
exec sp_changeobjectowner '['hunfsbbmsdb].[dv_style]',[dbo]
更改当前数据库中对象的所有者备份、恢复数据库时,往往会出现所有者是原来的用户,这样当你在新的系统中使用 时,会出现表名无效的错误提示,而加入原来的用户名,又会出现用户已经存在的错误,
所以最好的方法就是修改成dbo:
(附修改存储过程的方法,在查询器中执行:
EXEC sp_changeobjectowner 'hunfsbbmsdb.hishop_creatorder', 'dbo'),就把 'hunfsbbmsdb的存储过程改为dbo所有了。
可以使用 sp_changedbowner 更改数据库的所有者。
方法一:右键点击该表-》设计表,在上面的一排小图标中,点最后一个“条件约束”,点“表”页,在里面更改所有者。(若没有条件约束的小图标,可以点右键,能看到一个“check约束”的选项)
方法二:利用脚本直接执行,用系统帐号或者超户登陆到该数据库,然后执行下面语句:
sp_configure 'allow updates','1'
go
reconfigure with override
go
update sysobjects set uid=1 where uid<>1
go
sp_configure 'allow updates','0'
go
reconfigure with override
第二种方法只能使用一次,第二次使用会出错。
sql server 2005
1.先说说如何在SQL 2005中批量修改存储过程的架构。
执行以下SQL,将执行结果拷贝出来,批量执行既可。
SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + p.Name
FROM sys.Procedures p INNER JOIN sys.Schemas s on p.schema_id = s.schema_id
WHERE s.Name = '旧的架构名称'
2.再说说如何在SQL 2005中批量修改表的架构。
执行以下SQL,将执行结果拷贝出来,批量执行既可。
declare @name sysname
declare csr1 cursor
for
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
where table_schema='dbo'
open csr1
FETCH NEXT FROM csr1 INTO @name
while (@@FETCH_STATUS=0)
BEGIN
SET @name='旧的架构名称.' + @name
print 'ALTER SCHEMA dbo TRANSFER ' + @name
fetch next from csr1 into @name
END
CLOSE csr1
DEALLOCATE csr1
文字表达水平有限,有不足地方欢迎批评指正!
特搜索了一下修改用户表所有者为dbo的解决方法。总结一下供需要之用。
解决方法一:从企业管理器中直接操作
a、打开企业管理器----找到你的用户名不对的表
b、然后右键点击该表-》设计表,在上面的一排小图标中,点最后一个“条件约束”
c、点“表”页,在里面更改所有者。
更改所有者为dbo,保存即可。
解决方案二:通过sql语句执行
sql server 2000
exec sp_changeobjectowner '['hunfsbbmsdb].[dv_style]',[dbo]
更改当前数据库中对象的所有者备份、恢复数据库时,往往会出现所有者是原来的用户,这样当你在新的系统中使用 时,会出现表名无效的错误提示,而加入原来的用户名,又会出现用户已经存在的错误,
所以最好的方法就是修改成dbo:
(附修改存储过程的方法,在查询器中执行:
EXEC sp_changeobjectowner 'hunfsbbmsdb.hishop_creatorder', 'dbo'),就把 'hunfsbbmsdb的存储过程改为dbo所有了。
可以使用 sp_changedbowner 更改数据库的所有者。
方法一:右键点击该表-》设计表,在上面的一排小图标中,点最后一个“条件约束”,点“表”页,在里面更改所有者。(若没有条件约束的小图标,可以点右键,能看到一个“check约束”的选项)
方法二:利用脚本直接执行,用系统帐号或者超户登陆到该数据库,然后执行下面语句:
sp_configure 'allow updates','1'
go
reconfigure with override
go
update sysobjects set uid=1 where uid<>1
go
sp_configure 'allow updates','0'
go
reconfigure with override
第二种方法只能使用一次,第二次使用会出错。
sql server 2005
1.先说说如何在SQL 2005中批量修改存储过程的架构。
执行以下SQL,将执行结果拷贝出来,批量执行既可。
SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + p.Name
FROM sys.Procedures p INNER JOIN sys.Schemas s on p.schema_id = s.schema_id
WHERE s.Name = '旧的架构名称'
2.再说说如何在SQL 2005中批量修改表的架构。
执行以下SQL,将执行结果拷贝出来,批量执行既可。
declare @name sysname
declare csr1 cursor
for
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
where table_schema='dbo'
open csr1
FETCH NEXT FROM csr1 INTO @name
while (@@FETCH_STATUS=0)
BEGIN
SET @name='旧的架构名称.' + @name
print 'ALTER SCHEMA dbo TRANSFER ' + @name
fetch next from csr1 into @name
END
CLOSE csr1
DEALLOCATE csr1
文字表达水平有限,有不足地方欢迎批评指正!
相关文章推荐
- 安装Sql Server 2008,遇到的无权限创建数据库、修改身份验证模式等问题的原因及解决方法
- Dynamics CRM 打开数据加密报错及修改用户邮件保存报错的解决方法
- sql server修改用户表的所有者
- SQL SERVER 不能修改表结构、列类型 解决方法
- 修改SQL Server 2005 sa用户密码的方法
- SQL Server 2008不能修改表的解决方法
- 用户登录失败。原因:未与信任 SQL Server 连接相关联”的解决方法
- SQL Server 2008不能修改表的解决方法
- Dynamics CRM 打开数据加密报错及修改用户邮件保存报错的解决方法
- SQL Server修改列的类型时,弹出不允许保存更改对话框的解决方法
- sql server 2008 用户 NT AUTHORITY\IUSR 登录失败的解决方法
- SQL Server 2008不能修改表结构的解决方法 .
- SQL Server 2005 出现“此数据库没有有效所有者”错误的解决方法
- 记SQL Server的SA用户密码解决方法
- SQL SERVER 2008不能修改表结构解决方法
- SVN多用户同时修改一个文件冲突过程分析及解决方法(非用锁方法)
- SQL SERVER 2008不能修改表的解决方法(转)
- SQL Server 2008不能修改表的解决方法
- SQL SERVER 2008不能修改表的解决方法(有图解说明)