2014-04-06
Może są otwarte jakieś transkacje? Kandydat na zasobożercę:
DBCC OPENTRAN
Jeśli znajdziesz tutaj numer sesji, to może warto zobaczyć co ta sesja robi?
select t.text,* from sys.dm_exec_connections c
cross apply sys.dm_exec_sql_text(c.most_recent_sql_handle) t
where c.session_id=55
A może ta lub jakaś inna sesja zablokowała inną sesję. Odpowiedź da (kolumna BlkBy):
EXEC sp_who2
Może powstały jakieś olbrzymie tabele w tempdb? Poniższe zapytanie wyświetli tabele i ich rozmiary:
use tempdb;
SELECT TBL.name AS ObjName
,STAT.row_count AS StatRowCount
,STAT.used_page_count * 8 AS UsedSizeKB
,STAT.reserved_page_count * 8 AS RevervedSizeKB
FROM tempdb.sys.partitions AS PART
INNER JOIN tempdb.sys.dm_db_partition_stats AS STAT
ON PART.partition_id = STAT.partition_id
AND PART.partition_number = STAT.partition_number
INNER JOIN tempdb.sys.tables AS TBL
ON STAT.object_id = TBL.object_id
ORDER BY TBL.name;
To może popatrzmy, która sesja otrzymywała najwięcej przestrzeniw w tempdb? Będzie to kandydat na zasobożercę:
SELECT
sys.dm_exec_sessions.session_id AS [SESSION ID],
DB_NAME(database_id) AS [DATABASE Name],
HOST_NAME AS [System Name],
program_name AS [Program Name],
login_name AS [USER Name],
status,
cpu_time AS [CPU TIME (in milisec)],
total_scheduled_time AS [Total Scheduled TIME (in milisec)],
total_elapsed_time AS [Elapsed TIME (in milisec)],
(memory_usage * 8) AS [Memory USAGE (in KB)],
(user_objects_alloc_page_count * 8) AS [SPACE Allocated FOR USER Objects (in KB)],
(user_objects_dealloc_page_count * 8) AS [SPACE Deallocated FOR USER Objects (in KB)],
(internal_objects_alloc_page_count * 8) AS [SPACE Allocated FOR Internal Objects (in KB)],
(internal_objects_dealloc_page_count * 8) AS [SPACE Deallocated FOR Internal Objects (in KB)],
CASE is_user_process
WHEN 1 THEN 'user session’
WHEN 0 THEN 'system session’
END AS [SESSION Type], row_count AS [ROW COUNT]
FROM sys.dm_db_session_space_usage
INNER join sys.dm_exec_sessions
ON sys.dm_db_session_space_usage.session_id = sys.dm_exec_sessions.session_id
i znowu sprawdzenie co ta sesja robi, jak wyżej
2014-04-03
Najpierw ustalmy, czy jest dostępny moduł ActiveDirectory:
Get-Module -ListAvailable
Import-Module ActiveDirectory
Do pobrania listy wszystkich grup służy:
Get-ADGroup
Jeżeli chcesz odfiltrować tylko niektóre grupy możesz się posłużyć parametrem filter:
Get-ADGroup -Filter „name -like 'GS_SQL_*'”
Domyślnie w/w polecenie nie pokazuje kto jest członkiem tych grup. Żeby taka informacja została dołączona należy posłużyc się opcją Properties i wskazać, że chcesz aby pobrać również listę członków tej grupy:
Get-ADGroup -Filter „name -like 'GS_SQL_*'” -Properties Members
ObiektyMicrosoft.ActiveDirectory.Management.ADGroup mają teraz wypełnioną właściwość Members. Members to kolekcja obiektów. Aby policzyć ile obiektów jest w tej kolekcji użyj właściwości Count:
Get-ADGroup -Filter „name -like 'GS_SQL_*'”-Properties Members | Select Name, @{n=’Count’;e={$_.Members.Count}}
No to chyba już wiadomo, jak wybrać te grupy, które mają puste members:
Get-ADGroup -Filter „name -like 'GS_SQL_*'”-Properties Members | where { $_.Members.Count -eq 0 }
Gotowe!
2014-04-01
Utwórz obiekt aplikacji Excel
$xl = New-Object -comobject Excel.Application
Zobacz jakie ma możliwości (właściwości i metody)
$xl | gm
Aplikacja Excel jest początkowo ukryta – ma niewidoczne okno. Pokaż je:
$xl.visible = $True
Utwórz nowy pusty skoroszyt:
$wb = $xl.Workbooks.Add()
Zobacz jakie możliwości daje skoroszyt:
$wb | gm
Zapisz go na dysku
$wb.SaveAs(’c:\temp\p1.xls’) Czytaj dalej »
2014-03-26
Sposób nr 1
SELECT max(create_date), max(modify_date) FROM SYS.tables
Zapytanie zwróci datę utworzenia ostatniej tabeli lub date jej modyfikacji np. dodania kolumny. A przecież te czynności nie są wykonywane codziennie. Kiedy baza okrzepnie tworzenie tabel odbywa się rzadko. Dlatego wolelibyśmy informację o tym, kiedy rekordy były ostatnio modyfikowane/dodawane, a może nawet czytane, dlatego:
Sposób nr 2
USE <your_db_name>
SELECT OBJECT_NAME(object_id) AS TableName,
last_user_update as LastAction, *
FROM sys.dm_db_index_usage_stats u
WHERE database_id = db_id(db_name())

Zapytanie korzysta z widoku sys.dm_db_index_usage_stats, który zawiera informacje o wykorzystaniu każdego indeksu w baize danych. Zobaczysz tu ile razy indeks był skanowany, przeszukiwany przez seek lub modyfikowany przez polecenia INSERT/UPDATE/DELETE. Dodatkowo znajdziesz też datę i godzinę kiedy te operacje były ostatnio wykonywane. Czytaj dalej »
2014-03-24
Błąd podczas uruchomienia skryptu Visual Basic.
Microsoft VBScript runtime error: ActiveX component can’t create object: 'SQLDMO.SQLServer
Należy zainstalować Microsoft SQL Server 2005 Backward Compability.
Poszukaj na płycie pliku SQLServer2005_BC i go zainstaluj.
Plik można ściągnąć z http://www.microsoft.com/en-us/download/details.aspx?id=6375
Ładny opis http://sqlserverfinebuild.codeplex.com/wikipage?title=Install%20SQL%202005%20Backward%20Compatibility
2014-03-21
Pewnego dnia, mniej więcej w miesiąc po skonfigurowaniu serwera, okazało się że SQL Agent nie startuje. W logu można było znaleźć informację „password expired”

Prosta sprawa. Trzeba tylko zmienić hasło agenta i uruchomić agenta. Aby nie było problemów w przyszłości wypadałoby jeszcze w przyszłości pamiętać o zmianie hasła, albo gdyby pozwalały na to polityki bezpieczeństwa, zaznaczyć, że hasło nie wygasa. Czytaj dalej »
2014-03-21
Administratorowi wygodnie zarządza się domeną jeżeli narzędzia do niej ma zainstalowane na swoim systemie. No a jeszcze wygodniej pracuje się w powershell, więc idealnie byłoby mieć zainstalowane na swojej stacji roboczej powershellowe narzędzia do obsługi domeny na swojej stacji. Załóżmy że masz już zainstalowane Remote Server Administration Tool (http://www.microsoft.com/pl-pl/download/details.aspx?id=7887). Aktualnie zaintalowane moduły wyświetlisz poleceniem
Get-Module -list:

Co jeżeli nie ma tu ActiveDirectory? Przejdź do panelu sterowania >> Programy i Funkcje >> Włącz lub wyłącz funkcje systemu Windows i zaznacz „Moduł usługi Active Directory dla środowiska Windows PowerShell”.
Gotowe!

A tu jeszcze inne rozwiązania w innych sytuacjach:
http://www.windowscommandsyntax.com/howto/how-to-install-the-active-directory-module-for-powershell/