我这个存储过程是要实现几张表数据的迁移。假设这个数据库是DB1(动态创建的数据库,所以名称也是随机的),  要迁移其中Table1  ... Table10 10张表里的部分数据到备份数据库 DB1_Backup (原数据库+"_Backup"后缀)那么我在DB1里写存储过程,如何将数据转移插入到DB1_Backup呢? 无法引用到DB1_Backup啊不要告诉我拼sql啊,太恐怖了,有上千行代码

解决方案 »

  1.   

    SELECT NAME FROM MASTER..SYSDATABASES
      

  2.   

    insert into   数据库名1..表名(字段名) select 字段 from  数据库名2..表名
      

  3.   

    在本库执行和本库名称没有关系
    crete proc sp_test
    as
    insert into DB1_Backup.dbo.table1
    seelct * from table1
      

  4.   

    以上各位朋友,我的问题核心就是 存储过程里 不知道要转移的数据库名字,或者说我要根据命名规则,动态得到这个名字,即DB1_Backup这个名字是动态得到的,不知道可不可以在存储过程里用
      

  5.   


    -- db_name() 函数可以获取当前数据库名
    select db_name()+'_Backup'
      

  6.   

    貌似只能用动态语句拼接,然后EXEC (@SQL)去执行。
      

  7.   

    首先建立一张表,记录你要转移的数据所在的表。然后:
    declare @sql varchar(8000)
    set @sql='create database '+db_name()+'_backup'
    exec (@sql)
    set @sql=''
    select @sql=@sql+' select * into '+db_name()+'_backup.dbo.'+tbname +' from '+tbname
    from backselect @sql
    exec(@sql)
      

  8.   

    create proc sp_name
    as 
    insert into DB1_Backup.dbo.table1 
    seelct * from table1
    Go
      

  9.   

    数据库名作为参数传进来,每个对象前都加上变量前缀,定义成动态SQL了。