1

すべて...複数のデータベース間で同一のテーブルをクエリする方法が必要です。私はおよそ30以上のデータベースを持っており、それらはすべて同じテーブルを持っています。

    SELECT 
      a.name
      , a.address
      , b.company_id
      , c.part_no
      , c.cost
    FROM accounts a
    JOIN business b on a.whatever = b.whatever
    JOIN crazy c ON b.things = c.things

このような単純なものですが、すべてのデータベースにまたがっています。焦点は複数のデータベースに参加することではなく、単純です。これはすべてのデータベースで同時に実行されます。長く引き出されたストアドプロシージャを作成するよりも簡単な方法が必要ですよね?

4

3 に答える 3

3
CREATE PROC dbo.alldatabasequery 
AS 

 CREATE TABLE #temp (
 databasename varchar(500),
 name varchar(max),
 address varchar(max),
 company_id varchar(max),
 cost varchar(max)
 )
INSERT INTO #temp 
 EXEC sp_MSforeachdb N'IF ''?'' NOT IN ( ''model'',''tempdb'',''master'',''msdb'')
  BEGIN 
  SELECT databasename=''?'' 
    , a.name
    , a.address
    , b.company_id
    , c.part_no
    , c.cost
    FROM ?.dbo.accounts a
    JOIN ?.dbo.business b 
    on a.whatever = b.whatever
    JOIN ?.crazy c
    ON b.things = c.things
   END' ; 

SELECT   * FROM #temp 


GO 

EXEC dbo.alldatabasequery 
于 2012-10-17T17:31:03.430 に答える
0

これを試してみてください

CREATE TABLE #temp (
 databasename varchar(500),
 name varchar(max),
 address varchar(max),
 company_id varchar(max),
 cost varchar(max)
 )


DECLARE @statement varchar(max)=''

     declare cur cursor FOR
 select name
   from master.dbo.sysdatabases
  where dbid >4

      open cur

 DECLARE @name  VARCHAR(8000)


      fetch next from cur into @name

      while @@fetch_status = 0

      begin

   SET @statement='SELECT databasename='''+@name+''', a.name
    , a.address
    , b.company_id
    , c.part_no
    , c.cost
    FROM '+@name+'.dbo.accounts a
    JOIN '+@name+'.dbo.business b 
    on a.whatever = b.whatever
    JOIN '+@name+'.crazy c
    ON b.things = c.things'

  INSERT INTO #temp 
  EXEC (@statement)
   fetch next from cur into @name
     end
    close cur
    deallocate cur

SELECT   * FROM #temp 
于 2012-10-17T20:46:38.777 に答える
0

この記事はあなたが探している解決策を持っているかもしれません。

http://www.sqldbadiaries.com/2010/10/09/run-a-query-against-multiple-instances-using-ssms/

于 2012-10-17T21:17:01.177 に答える