【问题标题】:How to add user at once in all databases?(Sybase-ASE)如何在所有数据库中一次添加用户?(Sybase-ASE)
【发布时间】:2019-08-02 05:06:33
【问题描述】:

我想使用下面的命令sp_adduser 一次将用户添加到所有数据库中。什么查询可以同时访问所有数据库? 这通常可以在 Sybase 中执行吗?

【问题讨论】:

    标签: sybase sap-ase


    【解决方案1】:

    这可能适用于 shell 脚本:

    user=<your new sybase user>
    
    isql -U ${UID} -P ${PWD} -S ${SERVER} <<! | tee $0.out
    set nocount on
    go
    declare cur cursor for select name from master..sysdatabases order by 1
    go
    declare @l_name varchar(30), @l_sql varchar(777)
    begin
      open cur
      fetch cur into @l_name
      while @@sqlstatus = 0
      begin
        print @l_name 
        fetch cur into @l_name
      end
      close cur
      deallocate cur
    end  
    go
    !
    
    for dbname in `cat ${0}.out`; do
      echo "
    use ${dbname}
    go
    sp_adduser ${user}
    go
    " >>${0}.sql
    done
    
    isql -U ${UID} -P ${PWD} -S ${SERVER} -i ${0}.sql
    

    【讨论】:

    • 为什么直接选择就可以使用游标来获取数据库名称列表?
    • 早期版本尝试立即执行,这不需要 sp_adduser。
    • 没关系,尽管没有立即执行,但您仍然不需要光标将名称放入文件中。您也可以执行 dbname..sp_adduser 而不是每次都使用 db,这样就可以了。
    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 2023-01-19
    • 2016-12-10
    • 2020-05-17
    相关资源
    最近更新 更多