zoukankan      html  css  js  c++  java
  • sql server 批量修改数据表和存储过程的所有者(2000)或架构(2005)

    sql server 2000

    exec sp_changeobjectowner '[bbsdb].[dv_style]',[dbo]

    更改当前数据库中对象的所有者备份、恢复数据库时,往往会出现所有者是原来的用户,这样当你在新的系统中使用 时,会出现表名无效的错误提示,而加入原来的用户名,又会出现用户已经存在的错误,

    所以最好的方法就是修改成dbo:

    怎么样把sql server 2000的用户表的所有者,改成dbo,而不是用户名。

    (附修改存储过程的方法,在查询器中执行:
    EXEC sp_changeobjectowner 'usera.hishop_creatorder', 'dbo'),就把 usera的存储过程改为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

  • 相关阅读:
    已知: 每个飞机只有一个油箱, 飞机之间可以相互加油(注意是相互,没有加油机) 一箱油可供一架飞机绕地球飞半圈,问题:为使至少一架飞机绕地球一圈回到起飞时的飞机
    简易vector的实现
    简单的内存池实现
    归并排序,递归与非递归
    堆排序
    位运算
    二叉树的建立,以及非递归遍历
    “云端融合”思想的自我摸索(很不靠谱)
    linux android开发环境搭建
    Android系统架构及内核简介
  • 原文地址:https://www.cnblogs.com/conghuip/p/1628206.html
Copyright © 2011-2022 走看看