2013-10-28
Podczas regulowania ilości pamięci dostępnej dla SQL server przydaje się znajomość wartości Page Life Expectancy.
Liczba ta mówi ile czasu po wczytaniu strony z dysku, średnio rzecz ujmując, strona znajduje się w pamięci ale nikt się do niej nie odwołuje. Jeżeli ta liczba będzie wysoka to znaczy, że serwer dysponuje dużą ilością pamięci. Wczytuje sobie do bufora strony kiedy były one po raz pierwszy potrzebne a potem sobie tam leżą i leżą i dość długo nikt z nich nie korzysta. Zauważ, że gdyby pamięci było za mało, to taka nieużywana stron znajdująca się w buforze zostanie z niego prędko wyrzucona, by zrobić miejse dla kolejnej strony.
Dawniej MS mówił, że wartość ta powinna wynosić minimum 300 sekund. Obecnie można rozważać wyższe wartości.
Jeżeli na twoim serwerze liczba jest duża, a występują problemy z dostępną pamięcią dla innych procesów pomyśl o zmniejszeniu parametru MaxMemory. W SQL Server od 2008 R2 opcja działa natychmiast.
Informacje o page life expectancy znajdziesz w raportach o SQL serwerze lub wykonując zapytanie:
SELECT [object_name],
[counter_name],
[cntr_value]
FROM sys.dm_os_performance_counters
WHERE [object_name] LIKE '%Manager%’
AND [counter_name] = 'Page life expectancy’
Zajrzyj też na http://blog.sqlauthority.com/2010/12/13/sql-server-what-is-page-life-expectancy-ple-counter/
2013-10-25
$Computer = Get-WmiObject -Class Win32_ComputerSystem -namespace „root\CIMV2”
$computer.Domain
2013-10-22
Skrypt w powershell chce wykorzystać polecenie PSExec do podłaczenia się do zdalnego komputera i wykonania na nim polecenia (tutaj nadania uprawnienia Full Control do dysku X: dla użytkownika user001:
.\PsExec.exe \\comp123 cmd.exe /c 'icacls T:\ /grant:r „user003”:(OI)(CI)F’
Polecenie się wykonuje poprawnie, ale zgłasza błędy:
PsExec.exe : At line:1 char:19 + c:\temp\PsExec.exe <<<< \\comp123 cmd.exe /c 'icacls T:\ /grant:r „user003”:(OI)(CI)F’ + CategoryInfo : NotSpecified: (:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError PsExec v1.98 – Execute processes remotely Copyright (C) 2001-2010 Mark Russinovich Sysinternals – www.sysinternals.com
processed file: X:\ Successfully processed 1 files; Failed processing 0 files Connecting to comp123…Starting PsExec service on comp123…Connecting with PsExec service on comp123…Starting cmd.exe on comp123… cmd.exe exited on comp123 with error code 0.
Czyli komunikatów o błędach dużo, ale komenda działa poprawnie Czytaj dalej »
2013-10-21
Formalnie, należy udokumentować uprawnienia, joby, credentials, proxy itp. odinstalować serwer, zainstalować go i wszystko od nowa odtworzyć. Ale okazuje się, że można szybciej (http://www.kentd.com/2012/10/24/downgrading-from-sql-server-2008-r2-enterprise-to-sql-server-2008-r2-standard/). Krótko mówiąc
-zatrzymać serwer
-odłożyć bazy na bok
-uruchomić serwer
-odinstalować Enterprise
-zainstalować Standard
-zatrzymać serwer
-podłożyć bazy (nawet systemowe z Enterprise)
Uwaga – po drodze jest konieczny restart!:
The following error occurred: A computer restart is required.
You must restart this computer before installing SQL Server.
Error result: -2067919934 Result facility code: 1214 Result error code: 3010
Please review the summary.txt log for further details
Planując więc downgrade na serwerze produkcyjnym zarezerwuj sobie okienko serwisowe…
2013-10-17
Przyczyną był niewłączony Agent XPs. W celu usunięcia:
sp_configure 'show advanced options’, 1
Reconfigure
sp_configure 'agent xps’,1
Reconfigure
potem usuń niepotrzebne Joby i odkręć co zrobiłeś:
sp_configure 'agent xps’,0
Reconfigure
sp_configure 'show advanced options’, 0
Reconfigure
2013-10-08
Oto, jak przy pomocy PowerShella można zmienić konto na jakim pracuje wybrana instancja SQL Servera:
function ChangeSqlServiceAccount($serverName, $instanceName, $userName, $password)
{
#ladowanie SMO odpowiedzialnego za konsole uslug sql
[System.Reflection.Assembly]::LoadWithPartialName(„Microsoft.SqlServer.SqlWmiManagement”)
$SMOWmiserver = New-Object (’Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer’)$serverName
#Odnalezienie zadanej instancji
$ChangeService=$SMOWmiserver.Services | where {$_.Name -eq $instanceName}
#Zmiana konta
$ChangeService.SetServiceAccount($userName, $password)
}
Jeśli zdefiniowałeś w/w funkcję to wywołujesz ją tak:
ChangeSqlServiceAccount 'sql001′, 'MSSQL$SQLEXPRESS’, 'bit\sql001′, 'Pa$$w0rd’
2013-09-28
Prosto:
$c=Get-Process -name notepad
If($c -eq $null) { notepad.exe }
A jeżeli chcesz kogoś zdenerwować włączając mu notatnik jeśli jeszcze nie działa, to:
while ($true)
{
$c=Get-Process -name notepad
If($c -eq $null)
{
notepad.exe
}
start-sleep -s 5
}