giovedì 23 aprile 2009

Disintallare System Center Essential (SCE) 2007

Se si sta pianificando di disinstallare SCE per un qualsiasi motivo, è importante sapere che non tutte le informazioni che il programma genera durante la sua installazione ed utilizzo vengono rimosse con la procedura di disinstallazione. Questo è importante soprattutto perché se non si rimuovono tutti i componenti che SCE installa (soprattutto sul dominio) non sarà possibile reinstallare il software.

Di seguito la procedura completa. Ovviamente dovete sostituire a NomeDominio il nome del vostro dominio...


Eliminare il gruppo SCE Managed Computers da Active Directory

Start > Esegui > dsa.msc
Tasto destro su NomeDominio e click su Trova
Digitare SCE Managed Computers nel campo Nome e click su Trova
Tasto destro su SCE Managed Computers nella lista di risultati e poi Elimina
Chiudere Computer e Utenti di Active Directory


Eliminare le Group Policies

Start > Esegui > gpmc.msc
Espandere NomeDominio
Espandere Group Policy Objects
Tasto destro su SCE Managed Computers Group Policy (…) e poi Elimina
Tasto destro su System Center Essentials All Computers Policy e poi Elimina
Chiudere Group Policy Management Console


Eliminare Service Connection Point (SCE)

La seguente procedura richiede ADSI Edit.

Start > Esegui > adsiedit.msc
Tasto destro su Domain (NomeDominio) sulla sinista e click su Nuovo > Query
Scrivere SCESCP nel box Name
Click sul bottone Browse, selezionare NomeDominio, e click su OK
Incollare la stringa (&(objectCategory=serviceConnectionPoint)(cn=SCESCP)) nel box Query String e click su OK
Espandendo Domain (NomeDominio) sarà comparsa la voce SCESCP. Click su quella voce.
Tasto destro su CN=SCESCP nel pannello di destra e click su Delete
Lasciare ADSI Edit aperto per il prossimo step


Eliminare Service Connection Point (SDKServiceSCP)

Tasto destro su Domain (NomeDominio) sulla sinista e click su Nuovo > Query
Scrivere SDKSCP nel box Name
Click sul bottone Browse, selezionare NomeDominio, e click su OK
Incollare la stringa (&(objectCategory=serviceConnectionPoint)(cn=SDKServiceSCP)) nel box Query String e click su OK
Espandendo Domain (NomeDominio) sarà comparsa la voce SDKSCP. Click su quella voce.
Tasto destro su CN=SDKServiceSCP nel pannello di destra e click su Delete

giovedì 16 aprile 2009

Asp.Net Menu e Internet Explorer 8 (IE8)

Se usate nelle vostre WebApplication il controllo Asp.Net Menu, vi sarete accorti che con Internet Explorer 8 non vengono visualizzati correttamente i sottomenu (vengono visualizzati completamente bianchi).

Microsoft ha fatto uscire delle patch da applicare all'IIS dei webserver per correggere il problema, ma a mio avviso non è la soluzione migliore. Basta infatti agire sui css per far funzionare correttamente il menu.

La classe da creare è banale:

.IE8Fix
{
z-index: 100;
}

e poi basta applicare questa classe all'elemento DynamicMenuStyle:

<asp:Menu ID="MioMenu1" runat="server" ... >
...
<DynamicMenuStyle CssClass="IE8Fix" />
...
<asp:Menu>


martedì 7 aprile 2009

SQL Server 2008 Row Constructors

Con SQL Server 2008 è stato introdotto il concetto di “Row Constructor” che aiuta senza dubbio a scrivere codice più compatto e in meno tempo.
Tramite l’utilizzo di Row Constructors è possibile inserire più righe in una tabella utilizzando un’unica istruzione INSERT:

INSERT INTO dbo.Customers(custid, companyname, phone, address)
VALUES
(1, 'cust 1', '(111) 111-1111', 'address 1')
,(2, 'cust 2', '(222) 222-2222', 'address 2')
,(3, 'cust 3', '(333) 333-3333', 'address 3')
,(4, 'cust 4', '(444) 444-4444', 'address 4')
,(5, 'cust 5', '(555) 555-5555', 'address 5');



In aggiunta a questa possibilità, ora la clausola VALUES è generale anche con altri comandi; in particolare è utilizzabile laddove sia necessario poter accedere ad una serie di valori, come se questi fossero in una tabella, ma senza avere una tabella reale. In parole più semplici è possibile riscrivere una serie di SELECT unite da un operatore UNION come un unico comando SELECT…VALUES:

SELECT *
FROM
(VALUES
(1, 'cust 1', '(111) 111-1111', 'address 1')
,(2, 'cust 2', '(222) 222-2222', 'address 2')
,(3, 'cust 3', '(333) 333-3333', 'address 3')
,(4, 'cust 4', '(444) 444-4444', 'address 4')
,(5, 'cust 5', '(555) 555-5555', 'address 5')
) AS C(custid, companyname, phone, address);