Sql 从我的服务器中的所有数据库读取所有数据

Sql 从我的服务器中的所有数据库读取所有数据,sql,sql-server-2000,Sql,Sql Server 2000,我正在使用SQLServer2000,我需要从所有数据库读取所有数据 在我的服务器中,因为我将处理一些数据,所以如何进行此查询? 我已经尝试过这个代码,但没有达到我想要的效果 ALTER PROCEDURE TMP_INGRESO_MASIVO_DAT_CLIENTES AS declare @Fila as int declare @Script_Dinamico as varchar(8000) declare @Script_Dinamico1 as varchar(8000) dec

我正在使用SQLServer2000,我需要从所有数据库读取所有数据 在我的服务器中,因为我将处理一些数据,所以如何进行此查询? 我已经尝试过这个代码,但没有达到我想要的效果

ALTER  PROCEDURE TMP_INGRESO_MASIVO_DAT_CLIENTES AS

declare @Fila as int
declare @Script_Dinamico as varchar(8000)
declare @Script_Dinamico1 as varchar(8000)
declare @Nro_Registros as int

Select Distinct  cod_empresa,Nombre_Base Into #Tmp_Bases1 From Estadistica_Cobranza.Dbo.Sis_Conexion_pagos Where Cod_Estado = 1 and Proc_Automaticos= 1--capturo nombre BD
Select Distinct  Identity(Int,1,1) As Fila, cod_empresa , Nombre_Base As Name  Into #Tmp_Bases From #Tmp_Bases1

    Drop table #Tmp_Bases1
    Select @Fila = 1
    Select @Script_Dinamico = ''
    Select @Script_Dinamico1 = ''
    Select @Nro_Registros  =  (Select Count (*) From  #Tmp_Bases ) + 1--cantidad de filas  +1





    While @Fila < = @Nro_Registros 
Begin
    Print(@Script_Dinamico)

Select @Script_Dinamico = 'INSERT INTO buc.dbo.tmp_DAT_CLIENTES '
Select @Script_Dinamico = @Script_Dinamico +'(COD_EMPRESA,'
Select @Script_Dinamico = @Script_Dinamico +'COD_SUCURSALEMPRESA,'
Select @Script_Dinamico = @Script_Dinamico +'RUT_CLIENTE,'
Select @Script_Dinamico = @Script_Dinamico +'RAZON_SOCIAL, '
Select @Script_Dinamico = @Script_Dinamico +'FECHA_CARGA,'
Select @Script_Dinamico = @Script_Dinamico +'FECHA_MODIFICACION'
Select @Script_Dinamico = @Script_Dinamico +')'
Select @Script_Dinamico = @Script_Dinamico +'Select '
Select @Script_Dinamico = @Script_Dinamico +'COD_EMPRESA, '
Select @Script_Dinamico = @Script_Dinamico +'COD_SUCURSALEMPRESA, '
Select @Script_Dinamico = @Script_Dinamico +'RUT_CLIENTE, '
Select @Script_Dinamico = @Script_Dinamico +'RAZON_SOCIAL, '
Select @Script_Dinamico = @Script_Dinamico +'FECHA_CARGA, '
Select @Script_Dinamico = @Script_Dinamico +'FECHA_MODIFICACION'
Select @Script_Dinamico = @Script_Dinamico + ' from ' + (Select Name  From #tmp_bases  Where Fila = @Fila) +'.Dbo.DAT_CLIENTES '
Select @Script_Dinamico = @Script_Dinamico  + 'Where ' + (Select Name  From #tmp_bases  Where Fila = @Fila) +'.Dbo.DAT_CLIENTES.cod_empresa =  '+ convert(varchar,(Select cod_empresa  From #tmp_bases  Where Fila = @Fila))
Select @Script_Dinamico = @Script_Dinamico  +'and '+ (Select Name  From #tmp_bases  Where Fila = @Fila) +'.Dbo.DAT_CLIENTES.rut_cliente not in (select RUT_CLIENTE from tmp_dat_clientes'
Select @Script_Dinamico = @Script_Dinamico+' where '+ (Select Name  From #tmp_bases  Where Fila = @Fila) +'.Dbo.DAT_CLIENTES.rut_cliente = buc.dbo.tmp_DAT_CLIENTES.RUT_CLIENTE )'








            Print ( @Script_Dinamico)
            Exec (@Script_Dinamico )
            Select  @Fila = @Fila +1
            Select @Script_Dinamico = ''
            Select @Script_Dinamico1 = ''



End
Drop Table #Tmp_Bases

GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

我假设在许多数据库中都有相同的表DAT_clients,如果数据库名称列在Estadistica_Cobranza.Dbo.Sis_Conexion_pagos.Nombre_Base中,则希望获取所有这些记录

虽然有很多方法可以做到这一点,但您似乎已经使用While循环将它们组合在一起,临时表和动态SQL通常都会影响性能和维护。然而,撇开编码方法和风格不谈,我最关心的是这一行:

Select @Script_Dinamico = @Script_Dinamico+' where '+ (Select Name  From #tmp_bases  Where Fila = @Fila) +'.Dbo.DAT_CLIENTES.rut_cliente = buc.dbo.tmp_DAT_CLIENTES.RUT_CLIENTE )'
dynamic where子句中的=将尝试将一个DB中的一列的值与另一个DB中的另一整列的值进行比较。也许这应该是一个in或其他操作符,它可以将一个值与一组值进行比较,而不是比较两个单独的值


您是否收到任何错误消息?

您可能希望如何处理所有这些输出?所有数据库中所有表中的所有数据?真的吗?这还假设所有表都具有完全相同的结构是的,所有表都相同structure@AaronBertrand我首先需要所有的数据,然后只需要一些数据,如身份证号码、电话等。请提前感谢。您如何处理您首先需要的数据和以后不需要的数据?