我现在有多个相同的数据库(200个以上),如果手工在每个数据库维护存储过程,工作量很大。
请问创建存储过程后,有什么办法将存储过程更新到其他所有数据库中去呢?
还请大家提供解决办法,谢谢!

解决方案 »

  1.   

    如果是我,用程序获取到所有的数据库名.
    USE master 
    SELECT dbid, DB_NAME(dbid) AS DB_NAME 
    FROM sysdatabases 
    ORDER BY dbid 
    GO 下面是结果集: dbid   DB_NAME                         
    ------ ------------------------------  
    1      master                          
    2      tempdb                          
    3      model                           
    4      msdb                            
    5      pubs                            (5 row(s) affected) 然后用程序循环去连接每个库,建立存储过程.当然,你也可以用油标来做.
      

  2.   

    可能关键在动态创建存储过程这部分,之前看网上有人说用以下语句创建SP,但我执行不成功。
    exec master.dbo.xp_cmdshell 'osql -U 用户名 -P 密码 -i c:\**1.sql'
      

  3.   

    (1)导出所有SP script - A.sql(2)循环获得每个数据库(3)改变 A.sql use XXX (4)执行
      

  4.   

    你在运行这句之前,先要连接上这个库.
    use dbname
    go
      

  5.   


    我执行xp_cmdshell后,返回结果如下所示,存储过程也没创建成功。
    1> 2> 3> 4> 5> 6> 7> 8> 1> 2> 1> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13> 14> 15> 16> 
      

  6.   

    提供一种方法給樓主use Tempdb
    go
    --drop table Tmp
    create table Tmp(SQL nvarchar(max))
    insert Tmp select 'create proc dbo.p1 
    as
    select 1 as Roy'
    go
    use Master 
    go
    --drop proc sp_Readcreate proc sp_Read
    asdeclare Roy  cursor local for
    select SQL from Tempdb.dbo.Tmp
    declare @SQL nvarchar(max)
    open roy
    fetch next from Roy into @SQL
    while @@Fetch_status=0
    begin
    exec(@SQL)
    fetch next from Roy into  @SQL
    end
    close Roy
    deallocate roygoexec sp_msforeachdb 'exec ?.dbo.sp_Read'
      

  7.   

    把執行的腳本存放在一個表中,
    再Master建一個sp_開頭的存儲過程調用執行腳本
    再用sp_msforeachdb 遍歷數據庫
      

  8.   

    本帖最后由 roy_88 于 2009-12-24 11:17:16 编辑
      

  9.   

    将存储过程以sp_开头作到master中,所有的库都可以调用它了
      

  10.   

    用osql写成bat执行就可以了,200个一个一个来不累死=.=
      

  11.   


    樓上兄弟,你知道怎樣用不?Osql/sqlcmd/isql 需要有多少庫就生成多少個對應的腳本格式
      

  12.   

    如果是多個實例時,數據庫名相同時可以這用Osql/sqlcmd/isql,讀固定格式腳本在SQL08可以直接
      

  13.   


    我刚开始理解成200多台数据库服务器库名相同了.......orz