Har stora problem med ett sql-cluster med länkade servrar. Hur är vyerna definierade? Hur är den länkade servern definierad? Jag skulle gissa att problemet beror på att frågan innehåller joins mellan olika länkade servrar och/eller lokala resurser, och då blir SQL Server förvirrad. Istället för att utföra en fråga på den länkade servern och sedan returnera resultatet för att därefter joina så returnerar den hela tabellen från den länkade servern, plockar ut den data den behöver och joinar sedan. Istället för att skicka kanske 1000 rader mellan servrarna så skickas kanske miljoner rader. Scenariot behöver inte vara exakt detta, men jag har hört om liknande problem tidigare. Tack för svaret. SELECT dbo.Material.Artnr, Artiklar.artbeskr AS beskr, dbo.Material.InkopProblem med sql-cluster
På en instans har vi flera databaser med en hel del vyer & procedurer i som vi använder i joins & schemalagda jobb med en stor databas på en länkad server.
Anledningen till detta är att vi inte får skapa några vyer eller procedurer på "huvud-sqlservern" men vi måste hämta data därifrån.
Har suttit och analyserat lite och jag tror att det är just dessa "remote querys" som säkerligen är roten till problemet.
Problemen som uppstår är att CPU:n som oftast slår i taket och det blir en massa låsningar på instanserna och vi tvingas starta om dem.
Om jag kör en fråga som går mot en länkad server i Query Analyzern och tittar på Execution plan så står det nästan alltid 90-100% på "Remote query cost".
En fråga som eg. skall ta ca 2 sek kan ta 1 min när man använder länkningen.
Finns det några inställningar man kan göra mot länkade servrar som vi kan ha missat? Jag behöver till exempel bara hämta data från huvuddatabasen inte skriva, kan man göra en sådan koppling för att underlätta?
Hur kan jag spåra vart felet egentligen ligger och vad som kan vara bästa lösningen?
Jag hoppas någon kan hjälpa mig!
Tack på förhand!
/KSv: Problem med sql-cluster
Sv: Problem med sql-cluster
Så här på ett ungefär ser en väldigt simpel remote query ut:
SELECT dbo.Material.Artnr, Artiklar.artbeskr AS beskr, dbo.Material.Inkop
FROM dbo.Material JOIN [SERVERNAMN\INSTANS].DATABASNAMN.dbo.ARTIKLAR ARTIKLAR ON dbo.Material.Artnr = Artiklar.artnr
Kan man göra på något bättre sätt? Hur kan jag kontrollera om hela tabellen skickas från den länkade servern?
Om man kollar i Query Analyzern på Execution Plan och markerar min Remote query så kan jag ju se "Argument" och vad jag kan se där så är det bara de fält jag ber om, inte hela tabellen men det kanske inte är rätt ställe att titta på?
Serverlänkningen ja, vad är mest intressant att kolla upp där?
Kollar jag på Linked Server properties på just denna länkning så har jag följade ibockat på Server options fliken:
Data Access
RPC
RPC Out
/KSv: Problem med sql-cluster
FROM dbo.Material JOIN [SERVERNAMN\INSTANS].DATABASNAMN.dbo.ARTIKLAR ARTIKLAR ON dbo.Material.Artnr = Artiklar.artnr
Jag vill bestämt minnas att den typen av frågor är de som kan leda till detta fenomen. Dock kan jag inte riktigt minnas hur det skulle ordnas, och har inte riktigt tid att kolla upp det den här veckan. Några tips på vad du kan testa för att lösa det dock: Testa gör en enkel vy på den andra servern vilken helt enkelt bara är en SELECT * FROM ARTIKLAR (iofs var ju problemet att du inte kunde skapa vyer där, men du kanske kan testa för att se om detta är problemet). Testa använda OPENQUERY eller OPENROWSET istället fö att plocka den från den länkade servern.