Freitag, 11. Januar 2008

Access Denied Error When You Make Code Modifications with Index Services Running

Wird ein .NET dll ersetzt bei laufendem Index Service, kommte folgende Fehlermeldung vom machine.config:

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"

Im .NET gibt es limitierungen zum adressieren von Memory. Hier eine Aussage vom Microsoft.
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

Das mit einer .NET Applikation Einträge ins Eventlog gemacht werden können, muss die Applikation Registriert werden.

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

Bei Windows Server 2003 mit Sp1 ist der IIS so konfiguriert, dass dieser immer mit Kerberos versucht zu Authentifizieren.
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

Freitag, 14. Dezember 2007

MOSS SP1 Update - Error mit SecurityUpdateErrorID Column

Bie der Installation von MOSS SP1 sind folgende Fehler aufgetreten:

Vor der Installation auf allen MOSS Server in der Farm ForeFront ausschalten.
Ich habe dies so gemacht:

net stop w3svc

net stop FSCController


"c:\Program Files\Microsoft Forefront
Security\SharePoint\fscutility.exe" /disable


Nach der der erfolgreichen ;-) Installation natürlich wieder einschalten:
"c:\Program Files\Microsoft Forefront Security\SharePoint\fscutility.exe"
/enable"net start FSCController


OSearch Service kann nicht gestoppt werden Error im PSCDiagnostics Log.

12/14/2007 09:53:45 7
ERR
An exception was encountered when trying to stop service OSearch


Hier konnte der Search Service gar nicht mehr gestoppt werden auch manuelle mit net stop osearch kam der Time out. So habe ich den Search Service in der Central Adminitration Console gestoppt und die mssearch Prozesse gekillt.

So der SharePoint Products and Technologies Configuration Wizard ging witer bis zu diesem Fehler:

[SearchDatabaseSequence] [ERROR] [12/13/2007
5:16:59 PM]: Column 'SecurityUpdateErrorID' in table
'MSSCrawlURL' is invalid for creating a default constraint.Could not create
constraint. See previous errors.



Das Log mit diesem Eintrag ist unter C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\Logs\Upgrade.log.

Also habe ich das upgrade script mal angeschaut unter C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\Template\SQL\SPS\1033\SEARCHDATADB.SQL.

Hier will das Update ein "alter Table" von MSSCrawlURL machen und die Column SecurityUpdateErrorID als int und mit "not null" erstellen. Leider funktioniert dies nicht, die Column wird nie erstellt.

Workaround: Column manuell erstellen, halt mit not null allowed.

Danach den SharePoint Products and Technologies Configuration Wizard nochmals Starten und der Wizard kann die Installation beenden.

Donnerstag, 13. Dezember 2007

IIS 6.0 IIS Application Pool Settings für MOSS

Bei 32Bit Hardware ist es wicht das der Application Pool vom IIS Recycling Einstellungen gemacht werden. Ohne Settings berechnet .NET seber ein Wert. Dieser Wert wird verwendet für den das clean up des Memory Caches. Ist der Wert zu tief braucht der Prozess zulange für das cean up. Ist dieser zu hoch können die Prozess zu gross wachsen und es kann eine OutOfMemory Exception auftreten.

Die empfohlenen Settings sind:

Virtual memory-based recycling 1300MB
Used memory recycling 1000MB

Weiter sollte der Prozess 30 Min. vor dem Traffic Peak gerecycled werden.

Für den Shutdown des Prozesses muss der Timeout auch auf 300 gesetzt werden. Sonst werden grosse File uploads abgeprochen.

Zum analysieren der Worker Prozess recyciles kann der folgende Wert gesetzt werden in der IIS Meta Datenbank.

cscript adsutil.vbs set w3svc/AppPools//LogEventOnRecycle 255

Mittwoch, 5. Dezember 2007

Windows Service Berechtigung setzten

Für bestimmte User ohne Adminrechte zu berechtigen, dass diese Serverice Stoppen und Starten können, kann dies mit dem subinacl gemacht werden.
Wichtig die Version 4, 0, 1, 1604 ist buggy und setzt die ACL nicht!
Mit Version 5.2.3790.1180 http://www.microsoft.com/downloads/details.aspx?familyid=e8ba3e56-d8fe-4a91-93cf-ed6985e3927b&displaylang=en hatte ich bis jetzt keine Probleme.

Folgender Syntax gilt für die Service Berechtigung.
SUBINACL /SERVICE \\MachineName\ServiceName /GRANT=[DomainName\]UserName[=Access]
z.B.
SUBINACL /SERVICE "\\MyServer\SNMP Service" /GRANT=MyServer\Users=F

Wenn der Servicename ein Space hat muss dieser in "" gesetzt werden

Für Access gilt:
F : Full Control
R : Generic Read
W : Generic Write
X : Generic eXecute
L : Read controL
Q : Query Service Configuration
S : Query Service Status
E : Enumerate Dependent Services
C : Service Change Configuration
T : Start Service
O : Stop Service
P : Pause/Continue Service
I : Interrogate Service
U : Service User-Defined Control Commands

Ab Service Pack 1 von Windows Server 2003 muss für den Remotezugriff noch die Berechtigung für den Service Manager gesetzt werden.

sc sdset SCMANAGER D:(A;;CCLCRPRC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)

Mit diesem Befehl wird die Berechtigung des Authenticated users verändert.

Zum restore des SCMANAGER
sc sdset SCMANAGER D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)