就下载 —— 安全下载、无毒手机软件、绿色软件官方下载网站最近更新|下载排行|热门标签|收藏本站

您现在的位置是:就下载 > IT资讯 > 软件教程 > 修改 SQLSERVER 中对象的所属架构 为 dbo 的方法

 SQL2005使用起来真是比SQL2000难于上手,登陆名,用户,架构,角色,权限,反反复复的,没弄清这个关系.       以前在服务器上的数据库使用远程连接SQL2000创建的存储过程,现在下载到本地,所有当时的存储过程所有者都不是dbo,而安全用户里有dbo,默认架构也是dbo,登陆名是sa,dbo具有dbowner的权限,原以为这样以sa创建adodb连接对象的话,是可以操作数据库的所有对象的,没想到在执行到以前的存储过程时提示:


      Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'       [Microsoft][ODBC sql server Driver][SQL Server]找不到存储过程 'Proc_WebCount'。      
      一下子胡涂了一阵,默认sa就是dbowner权限的,怎么会没有执行权限呢,反复设置dbo权限,架构,还有原来的所有者架构,权限帐号,怎么也不能把现在的所有者与dbo联系起来.       最后查了点资料,终于找到修改数据库中各个对象所有者的方法,修改了一下,直接执行就可以用,挺方便..      
      以SA登陆,USE要选择的数据库,再执行下面的SQL语句:
      --创建游标,查询所有者为NiunvDB的记录
      declare csr1 cursor
      for
      select 'Name' = name
      from sysobjects
      where user_name(uid)='NiunvDB'
      order by name
      open csr1       --循环读取游标记录,执行系统存储过程SP_ChangeObjectOwner修改对象所有者
      FETCH NEXT FROM csr1 INTO @name
      while (@@FETCH_STATUS=0)
      BEGIN
      SET @name='NiunvDB.'+@name
      EXEC SP_ChangeObjectOwner @name, 'dbo'
      fetch next from csr1 into @name
      END
      CLOSE csr1
      DEALLOCATE csr1       执行以后可以看到
      告: 更改对象名的任一部分都可能会破坏脚本和存储过程。
      警告: 更改对象名的任一部分都可能会破坏脚本和存储过程。
      警告: 更改对象名的任一部分都可能会破坏脚本和存储过程。
      警告: 更改对象名的任一部分都可能会破坏脚本和存储过程。
      警告: 更改对象名的任一部分都可能会破坏脚本和存储过程。
      警告: 更改对象名的任一部分都可能会破坏脚本和存储过程。
      警告: 更改对象名的任一部分都可能会破坏脚本和存储过程。
      警告: 更改对象名的任一部分都可能会破坏脚本和存储过程。
      警告: 更改对象名的任一部分都可能会破坏脚本和存储过程。
      警告: 更改对象名的任一部分都可能会破坏脚本和存储过程。
      警告: 更改对象名的任一部分都可能会破坏脚本和存储过程。
      警告: 更改对象名的任一部分都可能会破坏脚本和存储过程。
      ......       就是符合查询条件的全部对象的所有者被改了希望的所有者名称了.然后刷新数据库对象,可以看到,原来的NiunvDB.开头的存储过程全部变成了dbo.存储过程名了.....        sysobjects表里存储了对应数据库的对象数据,包括表,默认值,主键,存储过程,其中的type字段就表示对象类型,大概意思如下:
      P:存储过程
      U:用户表
      K:主键
      D:默认值
      还有几个类型,想不出来是什么意思,不过这几个应该够用了,要查表的信息,还可以使用
      select * from INFORMATION_SCHEMA.TABLES
      查询出所有对应数据库中的表数据,
      INFORMATION_SCHEMA.columns可查全部表的列数据
      INFORMATION_SCHEMA.VIEWS可查全部视图数据      
      sp_changedbowner 'sa'
      可直接更改当前数据库的所有者

上一篇:安卓刷机必看:什么是HBOOT命令?

本文地址:软件教程 >> http://www.9xz.net/it/ruanjianjiaocheng/19471.html

下一篇:PDF轻松转为WORD之实战图文指导

  • 打印
推荐阅读
热门专题
推荐内容
热点内容