Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

SQL-Sessions trennen vor DBCC SHRINKFILE

Frage Microsoft

Mitglied: goodbytes

goodbytes (Level 2) - Jetzt verbinden

16.02.2010, aktualisiert 18.10.2012, 8314 Aufrufe, 4 Kommentare

Hallo,
ich habe ein kleines Problem mit meinem neu aufgesetzten SQL-Server 2005. Ich möchte die physische Dateigröße des Transaktionsprotokolls einer Datenbank verringern (mittlerweile ca. 65 GB!).

Hierzu lasse ich folgendes Script laufen:

01.
USE MeineDB 
02.
CHECKPOINT 
03.
BACKUP LOG MeineDB WITH NO_LOG 
04.
DBCC SHRINKFILE(MeineDB_Log,NOTRUNCATE) 
05.
DBCC SHRINKFILE(MeineDB_Log,TRUNCATEONLY)
Auf dem alten Server (auch 2005) lief das per Task nachts problemlos. War ja auch keiner weiter eingeloggt.
Bei dem neuen klappt es aber nicht. Es kommt dann nur die folgende Meldung:

"Cannot shrink log file 2 (MeineDB_Log) because all logical log files are in use."

Wenn ich die Zugriffe auf die Datenbank per Script abrufe sehe ich auch mehrere Einträge, obwohl diese User definitiv keine Verbindung zur Datenbank zu diesem Zeitpunkt haben.
Irgendwie scheinen sie nicht sauber getrennt zu werden.

Selbst wenn ich die Datenbank als "SINGLE_USER" setze sehe ich sie noch und kann bekomme dann die gleiche Meldung.
Warum werden diese User nicht sauber getrennt? Gibt es da eine generelle Einstellung? oder wie kann ich sie ganz hart rauswerfen?

Torsten
Mitglied: Tommy70
16.02.2010 um 08:05 Uhr
Hallo,

eventuell funktioniert es so.

01.
ALTER DATABASE [TestDb] SET  SINGLE_USER WITH ROLLBACK IMMEDIATE 2 
02.
ALTER DATABASE [TestDB] SET  MULTI_USER 
Der erste Befehl bewirkt, dass die Datenbank in den Single-User-Mode gesetzt wird und fährt dabei gleichzeitig alle offenen Transaktionen zurück
Beim zweiten wird die Datenbank wieder in den Normal-Mode zurückgesetzt.

Allerdings würde ich zuerst abklären wieso Connections offen bleiben. Eventuell arbeitet die Client-Software nicht sauber.
Bitte warten ..
Mitglied: goodbytes
16.02.2010 um 12:33 Uhr
Hallo Tommy70,
leider funktioniert es so auch nicht. Es ist mir ein echtes Rätsel. Wenn die Datenbank in Beim alten Server hat es mit den gleichen Clients perfekt funktioniert. Die Clientversionen haben sich auch nicht geändert. Halt nur ein neuer Server.

Torsten
Bitte warten ..
Mitglied: Biber
16.02.2010 um 19:19 Uhr
Moin TorstenB,

Zitat von goodbytes:
Hallo Tommy70,
leider funktioniert es so auch nicht. Es ist mir ein echtes Rätsel. Wenn die Datenbank in Beim alten Server hat es mit den
gleichen Clients perfekt funktioniert. Die Clientversionen haben sich auch nicht geändert. Halt nur ein neuer Server.

Torsten
Dann kann es nach menschlichem bzw biberschen Ermessen nur so sein, dass die vorherige vermeintlich baugleiche Serverinstanz im SIMPLE Recoverymodus lief, die neue/jetzige dagegen im FULL Recovery Mode.

Schau mal bitte im Enterprise Manager bei alter (falls noch vorhanden) und neuer Datenbank unter (neudeutsch: ) "Properties", "Options", "Recovery Mode (FULL oder SIMPLE) und vermutlich auf deutsch "Eigenschaften", "Optionen", "Wiederherstellungmodus?".

SIMPLE Recovery ist zwar nichts, was einer Prod-DB angetan werden sollte, aber wenn ihr eh Transactions-Logs jede Nacht verkürzt... *lach*

Wie kommt ihr denn auf den Bolzen, dass das halb-manuell per Skript gemacht werden muss? Jede Nacht, wenn normale DBs schlafen?
Das Transaction-Log sollte eigentlich immer eine konstante (physische/von außen erkennbare) Größe behalten und NUR verkleinert werden, wenn abzusehen ist, dass es auch nie nie wieder auf die einmal erreichte Größe anwachsen wird (z.B. weil der Server nicht mehr 5000 Tabellen und 10 Appz & DBs beherbergt, sondern nur noch 200 Tabellen und 1 Appz).

Wenn ihr meint, der Server braucht mehr freien Plattenplatz--> auf nach eBucht/DasIsMeinLaden und größere Platte kaufen.

Grüße
Biber
Bitte warten ..
Mitglied: goodbytes
17.02.2010, aktualisiert 18.10.2012
Hallo Biber,
standardmässig steht die Prod-DB auf FULL. Ich hatte vor paar Tagen mal eine Test-Datenbank auf dem SQL-Server versuchsweise von FULL auf SIMPLE gesetzt und ein Backup gezogen. Genauso hatte ich im FULL-Modus mal die Transaktionsprotokolle gesichert. Alles hat nix gebracht; die physische Dateigroße wächst und wächst...

Damit werden auch die Backups immer größer, welche ja noch irgendwie mit auf die täglichen Bandsicherungen passen müssen. Mittlerweile ist ein DB-Backup gut 100 GB groß.

Mich würde einfach interessieren, warum das Shrinken nicht funktioniert. Wenn ich folgendes Script auf meinen SQL-Server loslasse sehe ich seltsamerweise noch bestehende Logins, obwohl die User gar nicht eingeloggt sein können:

01.
SELECT  
02.
   I.NTUserName, 
03.
   I.loginname, 
04.
   I.SessionLoginName, 
05.
   I.databasename, 
06.
   Min(I.StartTime) as first_used, 
07.
   Max(I.StartTime) as last_used, 
08.
   S.principal_id, 
09.
   S.sid, 
10.
   S.type_desc, 
11.
   S.name 
12.
FROM 
13.
   sys.traces T CROSS Apply 
14.
   ::fn_trace_gettable(CASE  
15.
                          WHEN CHARINDEX( '_',T.[path]) <> 0 THEN  
16.
                               SUBSTRING(T.PATH, 1, CHARINDEX( '_',T.[path])-1) + '.trc'  
17.
                          ELSE T.[path]  
18.
                       End, T.max_files) I LEFT JOIN 
19.
   sys.server_principals S ON 
20.
       CONVERT(VARBINARY(MAX), I.loginsid) = S.sid   
21.
WHERE 
22.
    T.id = 1 And 
23.
    I.LoginSid is not null 
24.
Group By 
25.
   I.databasename, 
26.
   I.NTUserName, 
27.
   I.loginname, 
28.
   I.SessionLoginName, 
29.
   S.principal_id, 
30.
   S.sid, 
31.
   S.type_desc, 
32.
   S.name
Hier eine Zeile der Ausgabe:

01.
NULL	user1	user1	MeineDB	11.02.2010 11:53	15.02.2010 09:51	281	0x2615590140F99742A836EFC2E6B54649	SQL_LOGIN	user1
Wenn ich aus der Anwendung heraus von einem Client nach eingeloggten Usern schaue ist dort nichts. Offenbar werden die Sessions einfach nicht sauber getrennt. Wie kann ich sie nun wirklich wenigstens testweise mal canceln?

Weitere Nachforschungen ergaben, dass die Datenbank offenbar noch auf Replikationen wartet.
Genau wie hier: http://www.administrator.de/forum/sql-server-2005-transaktionsprotokoll ...

Ich denke, dass es eine generelle falsche Einstellung am SQL-Server ist, da es alle Datenbanken betrifft (sogar meine VMware vSphere-Datenbanken, bei welchen sich ja momentan wirklich nichts tut).

Was also tun?

Torsten
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Microsoft
gelöst SQL LDF Datei SHRINKFILE (7)

Frage von lupolo zum Thema Microsoft ...

Windows Server
gelöst SQL-Server Datenbanksicherung inkl. Benutzerberechtigungen dafür? (4)

Frage von 1410640014 zum Thema Windows Server ...

Windows 10
gelöst Installationsproblem sql server 2014 auf windos 10 rechner (23)

Frage von jensgebken zum Thema Windows 10 ...

LAN, WAN, Wireless
Notebook LAN WLAN LTE trennen (2)

Frage von HansB3rt zum Thema LAN, WAN, Wireless ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...