PowerShell remoting på server 2008R2 Core Uden domæne

Server Core er en version som kun kør med en kommandopromt som standard

(i 2008R2), men den køre intet af det grafiske software og bruger derfor mindre plads, har bedre sikkerhed i form af mindre angrebs overflade, tilmed siger Microsoft at den skal kunne køre hurtigere! men, prisen er opsætnings besvær, Derfor denne lille guide til at opsætte powershel remoting, (så man bare kan administrere sin nye test server fra sin egen pind.)

 

Efter installationen af Server 2008R2

-          Sæt IP addresse

netsh interface ip set address “Local Area Connection” static 192.168.0.10 255.255.255.0 192.168.0.1 1

 

-          Installer NetFx2-ServerCore  [se eventuelt DISM /Online /Get-Features]

DISM /Online /Enable-Feature /FeatureName:NetFx2-ServerCore

(parametre starter med / her, det skal være ord-ret, ellers fejler dette)

 

-          installer PowerShell

DISM /Online /Enable-Feature /FeatureName:MicrosoftWindowsPowerShell

 

-          Start PowerShell

(taskmanager derefter start et program powershell)

 

-          Aktiver powershell remoting (Vælg A)

Enable-PSRemoting

 

- På Klienten!

-          Tilføj serveren til dine trustedHosts (pas på sikkerhed her)

Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.168.0.*

 

-          Log ind i din server

Enter-PSSession 192.168.0.10 –Credential Administrator

Lækker lille SQL query, til at finde tabellers plads forbrug

 

 

Need i say more? #tabelnavn betyder i øvrigt det er en temp tabel, (dvs den slettes når du logger af)

 

DROP TABLE #tmpTableSizes
CREATE TABLE #tmpTableSizes
(
tableName varchar(100),
numberofRows varchar(100),
reservedSize varchar(50),
dataSize varchar(50),
indexSize varchar(50),
unusedSize varchar(50)
)
insert #tmpTableSizes
EXEC sp_MSforeachtable @command1=”EXEC sp_spaceused ‘?’”

Boot til klassisk skrivebord i Remote Desktop Session Host Miljø

Jeg har lavet en guide til hvordan, man fixer så Windows Server 2012 desktop experience automatisk booter til Skrivebord i stedet for til Windows Start menuen.

1. Åben Start og skrive regedit og tryk enter. Dette åbner regestri editoren.

1

 

 

2. I registri editoren navigere til: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Server

Højreklik på “server” nøglen og vælg “permissions”.

2

 

3. I det vindue du har fået frem, klikker du på “Advanced”, det næste du vælger er at trykke på “Change” og tilføj “Administrators” gruppen, og tryk ok 2 gange for at komme tilbage til “permission vindues”.

3

 

4. Tryk nu på “Administrators” gruppen, og giv fuld adgang. Dette skal gøres for at give fuld adgang til nøglen, så den kan ændres.

4

 

5. Dobbel klik på: “ClientExperienceEnabled” dette åbner et nyt vindue. Ændre value fra 1 til 0, og tryk og for at gemme ændringen. Luk nu regestri editoren. For at være helt sikker kan du genstarte og Windows Server 2012 med desktop experience vil boote direkte til Skrivebord.

5

 

//Dallep

 

Disable firewall fra ikke administrativ bruger – remote

I tilfælde af at man sidder via eksempelvis teamviewer på en remote maskine som man ikke kan/vil tilgå fysisk,
som har sin firewall tændt, (og dermed udelukkes eksempelvis dameware og vnc)

Dermed antages det at problemet er at man ikke kan lukke for firewall ved at skifte bruger, da man så saver sin gren over

så kan man bruge følgende guide til at slukke firewall, så man kan overtage kontrollen igen

hold ALT og SHIFT nede mens du højreklikke på powershell programmet1

Du kan nu køre powershell som domæne administrator… eller dig selv,
derved kan alt i powershell eksekveres med administrative rettigheder…

Kør dernæst denne kommando som slukker firewall for alle brugere på denne PC

netsh advfirewall set allprofiles state off

2

 

(denne kommando virker på alle windows 7 maskiner med powershell… ja også uden mit personlige selvudviklede multithreadede script bibliotek)

 

Design af index til “high concurrency” systemer

Det er ofte for sent når man oplever (uhensigtsmæssig egenskaber) / fejl i et database design.

Guldkornet er om når du laver et indeks over tabeller, i et system med mange resurser. Det vil sige når en SQL server rammer 16+ kerner.

Det som der ofte sker er at flere threads ønsker at udnytte samme data (enten på disk eller i ram). Når dette sker er de fleste SQL servere fantastiske, til at lave fin-tunet adgang.Men i tilfælde af mange kerner kan disse blokere for hinanden, dette kan ofte kun løses ved at ændre nogen ting i databasens design. Men dette er faktisk ikke særligt slemt, HVIS man gør det til at starte med!..

Her er et trick til Index Design. (Det forholder sig til et clustered indeks, altså hvordan data fysisk ender med at blive lagt ned på disken)

Som det kan ses her, er indekset bygget på en identity(1,1) som højnes hver gang der indsættes, det som sker når flere kerner ønsker at indsætte, er at de venter på hinanden (given at de skal skrive til samme data side/page).For eksempels skyld, lad os sige vores index er bygget på Ordre_ID (altså et tal der forhøjes med 1 hver gang der indsættes).

Forstil dig at 32 Threads skal skrive på samme tid… I så fald må det tager 32 gange længere end hvis alle kunne indsætte på samme tid!

I dette eksempel bygges vores Indeks over data som ikke ligger sekventielt,derfor ligger data ikke på de samme data sider/pages, nu kan alle de tre threads indsætte deres records på samme tid. Eksempelvis kan vi i stedet for at lave et Index på Order_ID, så lave et på Customer og så Order_ID, når en ny record skal opdateres vil de bliver splittet op grundet at Kunde er med, dette betyder dog også at Kunde bliver en del af søge kriteriet.

Dette er ofte imod best pratice når man designer Clustered Index, (det er ikke så godt at skanne efter en “range”, men det kan afhjælpe problemet)

Gem credentials i RDP

Du kender vidst godt det, at man skal koble op til den samme server 30 gange om dagen. Du krydser af i  ”Lad mig gemme mine legitimations oplysninger”.1

 

Men du så bliver mødt af nedenstående næste gang du vil logge automatisk på:

2

 

Fortvivl ikke.. :)

Det du skal er – og følgende er på klient PC’en IKKE på serveren:

1. Åben Group Policy Editor via cmd -> gpedit.msc

3

2. Navigere til: Lokal computer-politik\Computerkonfiguration\Administrative Skabeloner\System\delegering af legitimationsoplysninger\

4

 

3. Åben “Tillad delegering af gemte legitimationsoplysninger med kun NTLM-servergodkendelse”

5

 

4.Sæt ovenstående til “Aktiveret”. Tryk på “Vis” og tilføj TERMSRV/* - Tryk ok 2 gange.

6

 

5. Kør en gpupdate via en command prompt.

7

 

- og wupti. Så kan du gemme credentials. :)

//Dallep

Forward port 3389 til Server via Cisco ASDM

Hej.
Her er en guide til hvordan man forwarder port 3389 (RDP) til en intern server. På “Cisco sprog” er dette kaldet at lave en: en-til-en Static NAT.

1. Det første man gør, er at man logger ind via ASDM.

2. Vælg punktet “Configuration” oppe i toolbaren.
13. Vælg punktet “Firewall” nede i venstre hjørne.
2For at man kan forwarde en port, er der 2 ting som skal oprettes: en nat regel og en Access List.

4. Vi starter med at oprette NAT reglen. Tryk på “NAT Rules” i venstre side.
35. tryk på pilen lige ved siden af  ”Add” og vælg ” Add “Network Object” NAT Rule…”
46. Nu får du NAT reglen frem. udfyld nedenstående:
- Name: Navnet på din NAT regel
- Type: vælg Host
- IP Address: Indtast adressen på Serveren
- Description: Lav en passende beskrivelse.

Under fanen “NAT” udfyld følgende:
- Sæt flueben i “Add Automatic Address Translation Rules”
- Type: Static
- Translated Address: Outside
5

7. Tryk nu på “Advanced.
Udfyld følgende under Interface:
- Source Interface: Inside
- Destination Interface: Outside

Udfyld Følgende under Service:
-Protocol: TCP (RDP benytter TCP – ved andre porte, kan ske at UDP skal benyttes)
-Real Port: 3389
-Mapped Port: 3389
Man kan højne sikkerheden ved at sætte “real port” til 3389 som er den port man skal forwarde, og sætte “Mapped Port” til fx 3390. Derved skal man bruge 3390 når man tilgår serveren via RDP ude fra (udefra.dallep.dk:3390). Ens yderside IP vil heller ikke svare på port 3389. Derved kan man flytte services væk fra standard porte og sikre sig mod script kiddies.
68. Tryk nu “OK” 2 gange.

9. Nu skal Access listen oprettes. Vælg “Access Rules” ude til venstre.

acces rules

Grunden til der skal laves en Access List, er at der som standard ligger en Global Access List, som dropper alt trafik som standard, når man opretter en access list.

acces rules2

10. Tryk nu på “Add” og vælg ” Add Access Rule”
811. Du vil nu blive mødt af en Access Rule vindue. Opsæt følgende:
- Interface: Ouside
- Action: Permit
- Source: Any (Hvis man altid kommer fra samme IP, kan der med fordel indtastes denne IP her, da alle andre IP’er så vil blive blokeret).
- User: N/A
- Destination: indtast IP adressen (Eller opret en host).
- Service: skrive tcp/3389
-Description: Lav en passende beskrivelse.

9

Tryk OK

12. tryk nu på Apply nede i bunden af ASDM, for at tilføje ændringer.

10

13. verificere at alt fungere som det skal. Tryk derefter på “Save” oppe i toppen af ASDM. Da ændringer ikke vil blive gemt i Running-Config før du trykker “Save”

//Dallep

 

Identificer lås på process i SQL server

Zuup,

Jeg er i gang med at genskrive nogen af mine fortrukne tips til Dallep.dk, En af de mest brugbare er hvordan man kan finde en process på en SQL server, som blokere eksekvering af en operation.

 

  • Identificer din SPID (kan eksempelvis findes i bunden af management studio, hvis det er en query du lige har kørt), det kan også være man må bruge Activity Monitor, til at finde en process som ser låst ud.
  • Undersøg denne process, ved hjælp af select * from sysprocesses where spid = <insert spid here> (husk til skal være master)
  • Denne kan fortælle hvilken process den selv venter på (hvis supsended, denne kan tjekkes på samme måde)
  • Kill! Kill! Kill! … således: kill <insert spid here>

Sletning af dobbelte data

Har du stået i en situation hvor din tabel pludselig har to ens rows,jeg har og det sucks, specielt når de er helt ens, dertil har jeg fundet en fed måde at gøre det på,

ved at udnytte evnen at kunne “partition by” og så bruge row_number() som giver det relative row number, så kan man identificere den første row, og slette efterkommere :)

denne basse identificere på column_1, column_2 og column_3 (tilføj eller fjern selv)

DELETE t
FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY column_1,column_2,column_3 ORDER BY column_1,column_2,column_3 ) AS Seq
FROM Table
)t
WHERE Seq > 1