SQL cachar anrop och resultat, data och annat från alla anrop. Om det nu är så att du kör nattlig backup vilket jag förutsätter så blir också allting tömt och skulle det vara så att just första anropet dagen efter tar lite längre tid så är det inte konstigt. SQL servern segar även ner då den bara stått orörd ett par timmar. Så då kan vi utesluta att det har med backupen att göra. Det låter lite konstigt måste jag tillstå. Har du kollat att din sql-fråga är optimerad? Pooling innebär att när en användare (en asp-sida) ställer en fråga till databasen så släpps därefter tråden till poolen och en annan sida eller användare kan återutnyttja den upprättade anslutningen till databasen. Ni råkar inte ha "auto close" markerat i database options? Det lär ge viss overhead eftersom sql-server stänger databasfilen när en connection stängs. I kombination med connection pooling skulle man kanske kunna uppleva det beteende som du beskriver? Hej, Har du kollat auto close som Johan nämnde? Om du kör nedanstående (byt ut databasnamn mot namnet på din databas) i Query Analyzer, vad får du då? Hur är det om ni ansluter till databasen via Query Analyzer? Med Query Analysern går det kvickt, man märker inte detta då. Är det inte så att din IIS gör en recycle på din webservice efter ett tag, då är det din webservice som är "slö" inte SQL. Du skriver i ditt första meddelande att det händer oavsett om ni går via webbservicen eller "direkt". Vad innebär då "direkt"? Det tolkade jag som att ni går t ex via Query Analyzer, men så verkar då inte vara fallet. När vi testade direkt anslöt vi alltså från klienten direkt till SQL servern. Som det är nu har vi alla anslutningar till SQL servern från webservicen, för att slippa installera databaskopplingar på klienterna.Anslutning till SQL (2000) databas - ett par frågor
Vi har ett Affärssystem som är byggt i .Net från vilket vi anropar en SQL 2000 databas, både direkt och via webservices. Första gången någon loggar in på morgonen tar det alltid lite längre tid än för de som loggar på efteråt, vad kan detta bero på, kan SQL server gå ner i "viloläge"? Det verkar inte ha med webservicen att göra eftersom det är samma sak vid direkt anslutning till databasen.
Vi ska även göra ett projekt för Pocket PC som ska ha delar av det ovan nämnda affärssystemet, efter en del provkörning av enkla funktioner har vi noterat att det vi måste ha någon form av anslutningskoll som kollar om Pocket PC:n har kontakt med databasen/IIS:en och att anslutningen är "aktiv" så att inte applikationen kraschar till följd av att användaren är utom räckhåll för det trådlösa nätverket och så att det går kvickt att hämta data, kan man på ett smidigt sätt kontrollera om man är ansluten till en SQL databas? Eller är det rent av så att man bara är ansluten just när man skickar in sin fråga och mottager svaret. (Vi använder oss av Dataset)
I Pocket PC:n tar det alltid lika långt tid att hämta data från databasen första gången applikationen används, men när man väl hämtat en gång går det bra mycket kvickare.
mvh // AndersSv: Anslutning till SQL (2000) databas - ett par frågor
Nu vet jag inte om det också råkar vara ett tidsödande anrop med full tablescan, inga index och allt sånt så kommer denna tid märkas precis som du skriver.
Det du alltså kan göra är två saker som jag primärt tänker på är att kolla vad för typ av anrop som görs, är det optimerat? Det andra är att sparka till sql-kärran med kanske en select count(1) from tabell för att göra en initialisering innan det körs. Det går ju att på klocka lägga sådana kommandon om det nu skulle hjälpa.
Sen är det också så att alla dina connections från databaslagret troligen släppts - och vid första anropet återansluter den, därefter tar poolingen vid då användarna börjar jobba.
Du kan ju börja med att testa i morgon bitti och bara skriva någon enkel selectsats mot den eller de tabeller som ditt första anrop görs emot och se om det blir någon skillnad?
Slutligen - är detta verkligen ett problem om det bara händer en gång för det första anropet?Sv:Anslutning till SQL (2000) databas - ett par frågor
Det har ingen betydelse vilken typ av sql-fråga som körs. Den första tar alltid 3-4 extra sekunder att få svar på om servern har "vilat" en stund innan.
Kan diskarna på servern gå ner i viloläge?
Vi har diskuterat att göra en Select Count(1) på en timer varje timme som en workaround. Men det känns ju bättre att lösa detta på riktigt.
Pooling? vad är det?
Detta är ett problem för den första användaren som kommer på morgonen. Och om servern stått orörd ett tag.Sv: Anslutning till SQL (2000) databas - ett par frågor
Hur många användare är det som kör? Är det en webb eller applikationslösning. Finns databasen på samma server som IIS:en? Vad händer om du kör samma sak i utvecklingsmiljön - går det lika långsamt då?Sv: Anslutning till SQL (2000) databas - ett par frågor
Bara en gissning.
/JohanSv:Anslutning till SQL (2000) databas - ett par frågor
Har nu konstaterat att jag går inte iland med detta, har inte kunskap nog. Vi får acceptera denna fördröjning så länge tills det att den börjar bli störande för användarna. Tyvärr sitter jag inne med minimala SQL-kunskaper, har bara tittat på ett par SQL utbildnings CD, och det är väl än bra start men för den här nivån krävs helt andra kunskaper. Tack för att du tog dig tid och intresserade dig för vårt krångel.
mvh // AndersSv: Anslutning till SQL (2000) databas - ett par frågor
<code>
SELECT DATABASEPROPERTYEX('databasnamn', 'IsAutoClose')
</code>Sv:Anslutning till SQL (2000) databas - ett par frågor
OM(!) det inte är samma sak då, så beror det förmodligen på Connection Pooling timeout. SQL (drivrutinen) håller en connection ett tag efter att man loggat ut, för att kunna snabbt logga in igen, med samma inställningar. Om man inte använder sin connection på ett tag, så blir man urloggad.
Kolla på servern (System monitor - SQL General statistics - User connections) och se om det inte är så.
/mickeSv:Anslutning till SQL (2000) databas - ett par frågor
Jag har kollat och jag fick svaret 0
Betyder det att Auto close inte är aktiverat ?Sv: Anslutning till SQL (2000) databas - ett par frågor
Jag har kollat I Performance monitor, jag ska försöka följa upp detta.
Vi ansluter bara till SQL via en webservice, så jag kan öppna flera instanser av vår klientapplikation utan att antalet user connections ökar.
Det ligger mellan 7-9 st anslutningar. Finns det några standardanslutningar som man skall räkna bort?
Jag ska kolla när det är full aktivitet i morgon hur många connections det är.
// AndersSv:Anslutning till SQL (2000) databas - ett par frågor
Man kan öka tiden för recycling - och sen kan man "förkompilera" med NGen också, båda kommer snabba upp ditt fall en del.
/mickeSv:Anslutning till SQL (2000) databas - ett par frågor
Sv: Anslutning till SQL (2000) databas - ett par frågor
mvh // Anders