webForumDet fria alternativet

SELECT från två databaser

5 svar · 1 866 visningar · startad av Pedda

PeddaMedlem sedan juni 20006 032 inlägg
#1

Jag har två databaser som är likadana, samma tabeller etc.
Det enda som skiljer är givetvis innehållet i tabellerna.

I stället för att behöva köra två frågor så skulle jag vilja kunna köra bara en.
Men jag är inte ens säker på om det går?

Denna fråga har jag nu mot en databas.

use sweswvaxj0005_WSS_Content
SELECT
      sites.LastContentChange
      ,webs.FullUrl
      ,webs.Title
  FROM [AllSites] as sites
  INNER JOIN [AllWebs] as webs
  ON sites.Id = webs.SiteId
  WHERE LastContentChange < '2014-07-01'
  ORDER BY sites.LastContentChange ASC
angelicaMedlem sedan juli 2013281 inlägg
#2

Jag är inte expert på alla världens databaser...
Men, du har ju någon form av EXECUTE kommando i många databaser och då skickas frågan till EN databas.

Jag tror / gissar att det är enklast att skicka en fråga till varje databas och sen spara materialet i någon form av variabel och sen mixtra med den variabeln, som array eller liknande.

Du ska tänka på att du ska komma ihåg vad du gjorde efter två-tre månader, så med det i åtanke kan kanske en liten omväg vara att föredra då det är lättare att redigera i efterhand.

Ja... det är hög spekulation på detta inlägget, det ska medges! :-)

PeddaMedlem sedan juni 20006 032 inlägg
#3

Löste det med en temporär tabell och två select.
Kanske inte den bästa lösningen? Men så får det bli för tillfället.

-- Ändra värde på @fromdate

DECLARE @fromdate as Date
SET @fromdate = '2014-07-01'

DECLARE @LastContentChangeTemp TABLE ( 
	LastContentChange datetime
	, FullUrl nvarchar(256) 
	, Title nvarchar(255)
) 

INSERT INTO @LastContentChangeTemp (LastContentChange, FullUrl, Title) 
	SELECT sites.LastContentChange
		,webs.FullUrl
		,webs.Title
		FROM [sweswvaxj0005_WSS_Content].[dbo].[AllSites] as sites
		INNER JOIN [sweswvaxj0005_WSS_Content].[dbo].[AllWebs] as webs
		ON sites.Id = webs.SiteId
		WHERE LastContentChange < @fromdate
		ORDER BY sites.LastContentChange ASC
		
INSERT INTO @LastContentChangeTemp (LastContentChange, FullUrl, Title) 
	SELECT sites.LastContentChange
		,webs.FullUrl
		,webs.Title
		FROM [sweswvaxj0005_WSS_Content_2].[dbo].[AllSites] as sites
		INNER JOIN [sweswvaxj0005_WSS_Content_2].[dbo].[AllWebs] as webs
		ON sites.Id = webs.SiteId
		WHERE LastContentChange < @fromdate
		ORDER BY sites.LastContentChange ASC
		
SELECT * FROM @LastContentChangeTemp
invecklarenMedlem sedan jan. 2008280 inlägg
#4

Om det är sql server så är principen denna:
SELECT * FROM Databas1.dbo.TabellNamn
UNION ALL
SELECT * FROM Databas2.dbo.TabellNamn

prplxrMedlem sedan juni 2012582 inlägg
#5

Kort följdfråga. Varför har du inte all data i samma databas och samma tabell med ett fält som anger vilken typ av data raden innehåller?

PeddaMedlem sedan juni 20006 032 inlägg
#6

Det är en server farm med över 5000 SharePoint siter. Därav flera databaser.

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)