Dienstag, 29. Juli 2008
WebDAV -Web Folders on Windows Server 2003 Problem
Montag, 14. Juli 2008
Powershell Command History & Performance
Lieder wird die Command History nicht gespeichert. So ist bei einer neuen Session alle Commands weg, die schon einmal verwendet wurden. Dies kann mit einem Profile Script nicht ganz befriedigend aber funktionierend nach gebessert werden.
- Muss die ExecutionPolicy gesetzt werden. Sonst werden keine Scripts ausgeführt. Hier gibt es 4 Varinaten die sind beschrieben unter help about_signing. Da wir ja wissen was wir machen verwenden wir die unsicherste ;-)
Set-ExecutionPolicy Unrestricted
%userprofile%\Documents\WindowsPowerShell die Datei Microsoft.PowerShell_profile.ps1 erstellen und in Notepad öffnen.
Folgendes Script Kopieren und einfügen.
Set-Location C:\
$MaximumHistoryCount = 1KB
if (!(Test-Path ~\PowerShell -PathType Container))
{ New-Item ~\PowerShell -ItemType Directory
}
function bye
{ Get-History -Count $MaximumHistoryCount Export-CSV ~\PowerShell\history.csv
exit
}
if (Test-path ~\PowerShell\History.csv)
{ Import-CSV ~\PowerShell\History.csv Add-History
}
Nun kann mit get-history Alias h oder mit invoke-history Alias r die letzten Kommandos wieder dargestellt oder verwendet werden.
http://blogs.msdn.com/powershell/archive/2006/07/01/653194.aspx
Ein weiters Problem ist das aufstarten der Powershell. Da vergehen Sekunden bis das erste Kommando eigegenem werden kann.
Hier hilft auch ein Script das die Powershell assamblies Compiliert. Das Script muss nur nach der Installation einmal ausgeführt werden. Solange kein Update für Powershell installiert wird ist das aufstarten einiges schneller.
Set-Alias ngen @(
dir (join-path ${env:\windir} "Microsoft.NET\Framework") ngen.exe -recurse |
sort -descending lastwritetime
)[0].fullName
[appdomain]::currentdomain.getassemblies() | %{ngen $_.location}
http://blogs.msdn.com/powershell/archive/2007/11/08/update-gac-ps1.aspx
Donnerstag, 29. Mai 2008
SQL 2000 Backup history löschen
CREATE PROC isp_DeleteBackupHistory(@DaysToRetain int)AS
SET NOCOUNT ON
DECLARE @Err intDECLARE @rc int
BEGIN TRAN
DELETE FROM msdb..restorefile FROM msdb..restorefile rf INNER JOIN msdb..restorehistory rh ON rf.restore_history_id = rh.restore_history_id INNER JOIN msdb..backupset bs ON rh.backup_set_id = bs.backup_set_id WHERE bs.backup_finish_date < (GETDATE() - @DaysToRetain)
SET @Err = @@ERROR
IF @Err <> 0 GOTO Error_Exit DELETE FROM msdb..restorefilegroup FROM msdb..restorefilegroup rfg INNER JOIN msdb..restorehistory rh ON rfg.restore_history_id = rh.restore_history_id INNER JOIN msdb..backupset bs ON rh.backup_set_id = bs.backup_set_id WHERE bs.backup_finish_date < (GETDATE() - @DaysToRetain)
SET @Err = @@ERROR
IF @Err <> 0 GOTO Error_Exit DELETE FROM msdb..restorehistory FROM msdb..restorehistory rh INNER JOIN msdb..backupset bs ON rh.backup_set_id = bs.backup_set_id WHERE bs.backup_finish_date < (GETDATE() - @DaysToRetain)
SET @Err = @@ERROR
IF @Err <> 0 GOTO Error_Exit SELECT media_set_id, backup_finish_date INTO #Temp FROM msdb..backupset WHERE backup_finish_date < (GETDATE() - @DaysToRetain)
SET @Err = @@ERROR
IF @Err <> 0 GOTO Error_Exit DELETE FROM msdb..backupfile FROM msdb..backupfile bf INNER JOIN msdb..backupset bs ON bf.backup_set_id = bs.backup_set_id INNER JOIN #Temp t ON bs.media_set_id = t.media_set_id WHERE bs.backup_finish_date < (GETDATE() - @DaysToRetain)
SET @Err = @@ERROR
IF @Err <> 0 GOTO Error_Exit DELETE FROM msdb..backupset FROM msdb..backupset bs INNER JOIN #Temp t ON bs.media_set_id = t.media_set_id
SET @Err = @@ERROR
IF @Err <> 0 GOTO Error_Exit DELETE FROM msdb..backupmediafamily FROM msdb..backupmediafamily bmf INNER JOIN msdb..backupmediaset bms ON bmf.media_set_id = bms.media_set_id INNER JOIN #Temp t ON bms.media_set_id = t.media_set_id
SET @Err = @@ERROR
IF @Err <> 0 GOTO Error_Exit DELETE FROM msdb..backupmediaset FROM msdb..backupmediaset bms INNER JOIN #Temp t ON bms.media_set_id = t.media_set_id
SET @Err = @@ERROR
IF @Err <> 0 GOTO Error_Exit
COMMIT TRAN
SET @rc = 0
GOTO isp_DeleteBackupHistory_Exit
Error_Exit:
ROLLBACK TRAN
SET @rc = -1
isp_DeleteBackupHistory_Exit:
DROP TABLE #Temp
SET NOCOUNT OFF
RETURN @rc
GO
Im Blog ist auch eine Version für SQL 2005 verfügbar:
http://weblogs.sqlteam.com/tarad/archive/2004/07/02/1704.aspx
Mittwoch, 28. Mai 2008
MCMS 2002 100% CPU Load - zu viele Postings
Zum feststellen wie viele Postings im CMS vorhanden sind, kann dies SQL Query ausgeführt werden:
Select type, Count(*), GETDATE()hier noch die Node Typen:
from scmcms.dbo.node
group by type
Type Name
1 Server
4 Channel
16 Postings
64 Ressourcen Folders
256 Ressourcen
16384 Template Gruppe
65536 Template
1048576 Administrator
2097152 Archive Folder, Deleted Items, Folder
524288 Rollen
1048576 Berechtigungs Gruppen
Die archivierten Postings können über den Sitemanager -> Tools -> Clear Revision History gelöscht werden. Leider funktioniert dies nicht immer, da schon zu viele archivierte Postings in der DB sind. Bei mir mit 27000 Postings und 97000 Ressourcen konnte ich nicht einmal ein Monat löschen. Zum Glück hatten dies Problem auch schon andere und kann gelöst werden mit dem ersetzten der Store Procedure PurgeRevisionsByDate.
http://support.microsoft.com/kb/899027/en-us
Danach konnte ich doch 4 Monate auf einmal löschen. Zu beachten ist das Transaction Log der DB dies wachst massiv bei dieser Löschaktion.
Der KB Artikel zum warten einer MCMS DB:
http://support.microsoft.com/kb/836646/en-us
Freitag, 25. April 2008
stsadm langsam, Publisher's CRL
Wenn die SharePoint DLL's geladen werden versucht der SharePoint im Internet auf http://crl.microsoft.com/ oder http://crl.verisign.com/ zu zugreifen. Tja, und ohne Internet Verbindung wartet der SharePoint auf den Timeout.
Es gibt verschiedene Workarounds dies zu Lösen:
- Host Eintrag setzen auf 127.0.0.1 für die zwei URL's. (Funktioniert nicht immer)
- Proxy Server einsetzten und mit proxycfg -p 192.168.0.1:8080 konfigurieren
- Disable im IE Tools>Internet Options>Advanced>Check for Publisher's certificate revocation.
- Die CRL's downloaden und Importieren
Download:
http://crl.microsoft.com/pki/crl/products/CodeSignPCA.crl
http://crl.microsoft.com/pki/crl/products/CodeSignPCA2.crl
Add them:
certutil -addstore CA CodeSignPCA.crl certutil -addstore CA CodeSignPCA2.crl
Wir haben uns für Variante 3 entschieden, so haben wir auch mit weiteren Applikationen zB. SQL Management Studio keine Probleme.
Da ja MOSS meistens unter einem Service Account betrieben wird, ist es wichtigs dass auch diese die CRL (Client Revocation List) nicht übers Internet prüfen wollen. Da die Einstellungen für den IE nur für den Aktiven User gelten habe ich ein Script erstellt, dass die Settings auf allen Usern auf dem Server setzt.
Const HKEY_USERS = &H80000003
SetAllUsersRegKey
"Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software
Publishing\State",146944,"REG_DWORD"
Sub SetAllUsersRegKey(sKeyName,sData,sType)
Dim oShell, sKey, oReg,
sSubKey,aRegKeys,aDesktopKeys
Set oShell = CreateObject("Wscript.Shell")
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
oReg.EnumKey HKEY_USERS, "", aRegKeys
For Each sSubkey In aRegKeys oReg.EnumKey
HKEY_USERS, sSubkey & "\Control Panel\Desktop", aDesktopKeys
If Not IsNull(aDesktopKeys) Then
Wscript.Echo sSubkey & "\" & sKeyName,sData,sType
oShell.RegWrite "HKEY_USERS\" & sSubkey & "\" & sKeyName,sData,sType
End If
Next
End Sub
Hier weiter Blogeinträge zu diesem Thema:
http://paulhorsfall.co.uk/archive/2007/05/27/Stsadm.exe-and-iisreset-Slow-Behind-Proxy-on-SharePoint.aspx
http://jritmeijer.spaces.live.com/blog/cns!8A48A27460FB898A!965.entry
Donnerstag, 17. April 2008
AddSchedulingJobDefinitions failed beim Site erstellen
Da der Application Pool nicht unter dem Central Administration Pool Accout konfiguriert ist, hat der Account keine Rechte den Job zu erstellen für die Features zu aktivieren. Da dies nur einmal beim erstellen aktiviert wird kann dies mit einem Workaround gelöst werden.AddSchedulingJobDefinitions failed. System.Security.SecurityException: Access denied. at
Microsoft.SharePoint.Administration.SPPersistedObject.Update()
....
- Im IIS Admin properties der Web Application öffnen
- Im Home Directory den Application Pool auf den Central Administration Pool setzten
- iisreset
- Site Template wählen (features aktivieren)
- Den Application Pool wieder zurück setzten
Ähnliches Problem habe ich hier gefunden, sprich die Lösung:
Donnerstag, 27. März 2008
Ausschalten vom UAC Vista Black Screen
Zum Glück kann das verdunkeln des Bildschirms ausgeschaltet werden in der Policy.
Run secpol.msc Security Settings > Local Policies > Security Options
dort suchen nach "User Account Control: Switch to the secure desktop when prompting for elevation" und auf disable stellen.
Voilà, die Anmeldebox erscheint Blitzschnell :-)
TrustedInstaller braucht 90% CPU unter Vista
Was ist die TrustedInstaller.exe?
Kurz ausgedrückt es ist der Prozess der die "wichtigen" System Ressourcen überwacht die mit dem OS installiert wurden. Diese werden geschützt, in dem nur noch der Benutzer NT Service\TrustedInstaller berechtigt ist auf den System files, folders und registry keys. Der TrustedInstaller wird jedes mal gestartet wenn das Windows Update läuft oder wenn "Problem Reports and Solutions" Service nach neuen Solutions sucht. Hier ist auch die Ursache des Problems (was er eigentlich versucht zu lösen).
Beim Aufstarten von Vista wird der Update Service gestartet und dieser sucht neue Updates also der TrustedInstaller wird aktiv.
Jeder Multimaedia PC hat sicher ffdshow installiert. Leider gibt es hier Probleme mit dem Media Player und es wird ein Problem Report erstellt. Diese Reports bleiben im "Problem Reports and Solutions" bis sie gelöscht oder gelöst werden. Wenn ein Report noch vorhanden ist, sucht Vista immer wieder nach Lösungen und der TrustedInstaller wird gestartet. Dies kann auch mitten in einem Film vorkommen und bei meinem nicht hoch performaten PC bleibt das Bild stehen.
Lösung:
Unter Start > Control Panel > Classic View > Problem Reports and Solutions > Clear Solution and Problem History > "bestätigen des löschen" > Control Panel schliessen
Ich habe jetzt sogar unter Problem Reports and Solutions > Change Settings > Advanced settings das "problem reporting" ausgeschaltet.
Wer die Berechtigungen der System files ändern will sollte diesen Blog Eintrag lesen:
http://blogs.msdn.com/irenak/archive/2007/01/30/sysk-277-how-to-bring-back-the-trustedinstaller.aspx
Dienstag, 25. März 2008
Spb Shell 2.0
Auf der Spb Homepage ist ein Video mit dem Funktionsumfang der Shell.
http://www.spbsoftwarehouse.com/products/mobileshell/?de
iFilter Pack Installation
http://www.microsoft.com/downloads/details.aspx?FamilyId=60C92A37-719C-4077-B5C6-CAC34F4227CC&displaylang=en
Folgende File Types sind im iFilter Pack:
File Type | Already added? |
---|---|
Docm | Yes |
Docx | Yes |
Pptm | Yes |
Pptx | Yes |
Xlsm | Yes |
Xlsx | Yes |
Xlsb | No |
Zip | No |
One | No |
Vsd | Yes |
Vss | Yes |
Vst | Yes |
Vdx | Yes |
Vsx | Yes |
Vtx | Yes |
Die Konfiguration der MOSS Search ist hier http://support.microsoft.com/kb/946336/en-us im KB Artikel beschrieben.
TCP Offloading / Chimney von SP2
TCP Offloading ermöglicht eine Entlastung der CPU indem Aufgaben des TCP-Protokolls an die Netzwerkkarte ausgelagert werden. Allerdings gibt es gerade bei Bladeservern damit Probleme. Diese lassen sich wahrscheinlich nur durch ein Firmware- und Treiber-Update der Netzwerk-Karten lösen, denn wenn das OS, die Treiber und die Netzwerk-Hardware nicht zusammenspielen gibts Probleme. Davon scheinen z.B. die LS21 Blades betroffen zu sein.
Ob die Offloading-Funktionen gerade aktiv sind kann man mit dem Befehl "Netstat -t -n" herausfinden. Ganz rechts taucht dann anstelle von "InHost" "Offloaded" auf.
Wenn man die Offload-Funktionen gröstenteils abstellen will ohne einen Reboot funktioniert dieses Kommando ganz gut:
Netsh int ip set chimney DISABLED
Wenn man die Funktionen in der Registry ganz ausschalten will kann dieses reg-File erstellt und importiert werden:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"EnableTCPChimney"=dword:00000000
"EnableRSS"=dword:00000000
"EnableTCPA"=dword:00000000
"DisableTaskOffload"=dword:00000001
Danach braucht es einen Reboot um die Einstellungen zu aktivieren.
Mehr Infos dazu unter diesen Links:
http://support.microsoft.com/kb/936594/en-us
http://technet.microsoft.com/en-us/library/bb878074.aspx
http://blogs.technet.com/sbs/archive/2007/04/24/common-networking-issues-after-applying-windows-server-2003-sp2-on-sbs.aspx
Montag, 24. März 2008
Control Panel Shortcuts
File name | Purpose |
---|---|
Access.cpl | Accessibility properties |
Appwiz.cpl | Add/Remove Programs properties |
Desk.cpl | Display properties |
Hdwwiz.cpl | Add Hardware properties |
Inetcpl.cpl | Internet properties |
Intl.cpl | Regional Settings properties |
Irprops.cpl | Infrared Port properties (located in C:\Windows\Driver cache\I386\Driver.cab until you install an infrared device) |
Joy.cpl | Joystick properties |
Main.cpl | Mouse properties |
Mmsys.cpl | Multimedia properties |
Ncpa.cpl | Network Connections properties |
Nusrmgr.cpl | User Accounts properties |
Nwc.cpl | Gateway Services for NetWare properties |
Odbccp32.cpl | Open Database Connectivity (ODBC) Data Source Administrator properties |
Powercfg.cpl | Power Options properties |
Sapi.cpl | Speech Properties (located in C:\Program files\Common files\Microsoft Shared\Speech) |
Sysdm.cpl | System properties |
Telephon.cpl | Phone and Modem Options properties |
Timedate.cpl | Time and Date properties |
Donnerstag, 6. März 2008
W03 Failover Cluster mit Vertias Storage Foundation "Not enough resources"
Nun hatten wir schon bei der Installation von Veritas Storage Foundation Probleme, dass das Setup den zweiten Node nicht mehr erreichen konnte und das Setup nicht vollständig beendet wurde. Der Cluster hat auch die Cluster IP Adresse Offline genommen und diese konnte auch nicht mehr gestartet werden. Im EventLog waren Einträge vom NetBT das die IP nicht gebunden werden konnte.
Nach einem HW Tausch mit der selben Installation konnte der Fehler Lokalisiert werden. Die neue HW hatte nur 2 CPU und 8 GB Memory und die Installation hatte keine Probleme mehr.
So haben wir die HW wieder getauscht und den /3GB switch entfernt in der boot.ini. Danach konnten alle Ressourcen wieder gestartet werden.
Service Account berechtigung für Cluster und SQL Server
- Act as part of the opertating system
- Adjust memory quotas for a Process
- Back up files and directories
- Debug programs
- Impersonate a client after authendication
- Increase scheduling priority
- Log on as a service
- Manage auditing and security log
- Restore files ans directories
Da ja auf den meisten Failover Cluster auch SQL installiert ist hier noch die User Rechte für den SQL Service Account:
- Act as Part of the Operating System
- Bypass Traverse Checking
- Lock Pages In Memory
- Log on as a Batch Job
- Log on as a Service
- Replace a Process Level Token
Donnerstag, 24. Januar 2008
IE Meldung: Access denied due to security policy violation
Access denied due to security policy violationUnd es spielt keine Rolle welche Version IE. Ich sah den Fehler in IE 7.0 & 6.0. Was sehr schön ist ;-) dass der Fehler nicht immer auftritt. Bei ein par Client funktioniert es und bei anderen nicht. Es kann auch sein das ein Client einen ganzen Tag ohne Probleme die Site aufrufen kann und plötzlich kommt die Fehler Meldung "Access denied ..."
Reject ID:
47985cd9-0-66060101-7b6
Nach etwas debugging mit Wfetch konnte ich den Fehler lokalisieren.
Standart IIS 6.0 ist der Authendication Provider auf "Negotiate, NTLM" eingestellt.
Dies habe ich schon in einem Posting beschrieben:
http://sigicom.blogspot.com/2008/01/iis-60-mit-kerberos-und-ntlm.html
Bei einer Anonymous abfrage des IIS gibt dieser diesen Header zurück:
HTTP/1.1 401 Unauthorized\r\n
Date: Thu, 24 Jan 2008 09:39:33
GMT\r\n
Server: Microsoft-IIS/6.0\r\n
WWW-Authenticate: Negotiate\r\n
WWW-Authenticate: NTLM\r\n
X-Powered-By: ASP.NET\r\n
X-AspNet-Version: 1.1.4322\r\n
Cache-Control: private\r\n
Content-Type: text/html;
charset=iso-8859-1\r\n
Content-Length: 14\r\n
Also wird zuerst ein Negotiate gemacht. Bei mir versuchte der IE mit Kerberos zu Authentifizieren und die Meldung in Wfetch:
ISC_REQ_MUTUAL_AUTH ISC_REQ_DELEGATE
set\n
0x80090303 Unable to
InitializeSecurityContext
Dies heisst zwar nur dass mein Client kein Kerberos Service Ticket von der KDC erhalten hat. So kann der IE nicht mit Kerberos Authentifizieren.
Wenn der IIS auf NTLM only umgestellt wird mit:
cscript adsutil.vbs set
w3svc/1/root/NTAuthenticationProviders "NTLM"
Ist die Antwort im Wfetch:
HTTP/1.1 401 Unauthorized\r\n
Date: Thu, 24 Jan 2008 09:36:19
GMT\r\n
Server: Microsoft-IIS/6.0\r\n
WWW-Authenticate: NTLM\r\n
X-Powered-By: ASP.NET\r\n
X-AspNet-Version: 1.1.4322\r\n
Cache-Control: private\r\n
Content-Type: text/html;
charset=iso-8859-1\r\n
Content-Length: 14\r\n
Und die Authentifizierung mit NTLM funktioniert.
So lange nicht alle Clients und Server mit Kerberos Authentifizierung können und die SPN's gesetzt sind, kann diese Fehler immer wieder auf treten.
Freitag, 11. Januar 2008
Access Denied Error When You Make Code Modifications with Index Services Running
Line 169: <add assembly="<System.Drawing," version="1.0.3300.0," culture="neutral," publickeytoken="b03f5f7f11d50a3a">/>
Line 170: <add assembly="<System.EnterpriseServices," version="1.0.3300.0," culture="neutral," publickeytoken="b03f5f7f11d50a3a">/>
Line 171: <add assembly="<*">/>
Line 172: </assemblies>
Lösung Indexer Service stoppen
http://support.microsoft.com/kb/329065/en-us
.NET "System.OutOfMemoryException"
The recommended approach for tuning is to measure the total memory consumed by the ASP.NET worker process by measuring the Process\Private Bytes (aspnet_wp) performance counter along with paging activity in System Monitor. If the counter indicates that the memory consumption is nearing the default limit set for the process, it might indicate inefficient cleanup in your application. If you have ensured that the memory is efficiently cleaned but you still need to increase the limit, you should do so only if you have sufficient physical memory.
This limit is important to adjust when your server has 4 GB or more of RAM. The 60 percent default memory limit means that the worker process is allocated 2.4 GB of RAM, which is larger than the default virtual address space for a process (2 GB). This disparity increases the likelihood of causing an OutOfMemoryException.
To avoid this situation on an IIS 5 Web server, you should set the limit to the smaller of 800 MB or 60 percent of physical RAM for .NET Framework 1.0.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt17.asp
Der Artikel bezieht auf .NET 1.0 aber die Physikalischen Grenzen sind die selben.
http://support.microsoft.com/kb/820108/en-us
Eventlog- Einträge schreiben mit ASP.NET
Dies kann mit mit einer .NET Library gemacht werden, die man im Visual Studio erstellt.
http://support.microsoft.com/kb/329291/en-us
IIS 6.0 mit Kerberos und NTLM
Es gibt zwei Varianten das Problem zu lösen
Ausschalten von Kerberos, so wird nur mit NTLM Authentifiziert:
http://support.microsoft.com/kb/215383/en-us
z.B.:
cscript adsutil.vbs set w3svc/1/root/NTAuthenticationProviders "NTLM"
Oder setzten des PrincipalNames, für Kerberos Authentifizierung:
Setspn -A HTTP/www.microsoft.com webserver1
http://support.microsoft.com/kb/326985/en-us