SQL: Logowanie do serwera tylko z wybranych hostów

2014-08-19

Czy możemy w jakiś sposób zablokować logowanie użytkowników do bazy danych z konkretnego serwera?

Klient zgłasza problem że użytkownicy czasem się mylą i w momencie logowania do aplikacji z serwera produkcyjnego zamiast logowania do produkcyjnej bazy danych wpisują testową bazę i na odwrót.

Można. Zastosuj Logon trigger np taki:

 

USE Master
GO

CREATE TRIGGER DenyLogonTrigger
ON ALL SERVER
FOR LOGON

AS

BEGIN

DECLARE @HostName varchar(50)
SET @HostName = HOST_NAME()

if @HostName = 'SERVER01′ –NAZWA ZAKAZANEGO HOSTA

BEGIN
RAISERROR(’LOGIN FROM WPPL0ITA082′, 15,1) WITH LOG –KOMUNIKAT DO ZAPISANIA W LOGACH, jeżeli w ogóle taki ma być.
ROLLBACK
END

END

GO

Komunikat uzyskiwany u klienta wygląda następująco

trigger_error

By Rafał Kraik in SQL

Powershell: Informacja o restarcie/wyłączeniu systemu

2014-08-18

Jedna prosta komenda zwróci zapisy z logu systemowego o ostatnio wykonywanych restartach Windows. W logu znajduje się też informacja o tym kto zainicjował restart.

Get-EventLog -LogName System -Source „USER32” | ? {$_.EventID -eq 1074} | select -First 10 | ft -wrap

By Rafał Kraik in Power Shell

SQL: Server is in script upgrade mode – nie można się zalogować po instalacji aktualizacji

2014-08-16

Podczas instalacji Cummulative Update wszystkie usługi SQL zostały wyłączone. Takie postępowanie pomaga uniknąć konieczności restartu po zainstalowaniu update. Po włączeniu usług, od razu próbowałem się zalogować na serwer. Niestety próba kończyła się komunikatem:

Login failed for user 'DOMAIN\USERNAME’. Reason: Server is in script upgrade mode. Only administrator can connect at this time. [CLIENT: 11.22.33.44]

Czyżbym coś zrobił nie tak? Otóż nie. Wszystko jest ok. ów „Script update mode” to tylko czas poświęcony na upgrade baz systemowych. Po uruchomieniu serwera uruchomiły się te procedury i to trochę czasu zajmuje. W tym czasie chociaż serwer działa, nie można się na niego zalogować. Nie wierzysz? Zajrzyj do pliku ERRORLOG. Łyknij kawy i poczekaj. Kiedy skrypty się uruchomią, będzie się można zalogować.

 

By Rafał Kraik in SQL

Powershell: Contains nie działa!

2014-08-05

Wykonuję:

$query = logman query -s server01

W zmiennej $query pojawia się:

 Collection               Type                          Status 
 --------------------------------------------------------------- 
 XXXXX                    Counter                       Stopped 
 YYYYY                    Counter                       Running 
 System Overview          Counter                       Stopped 
 capacity                 Counter                       Running

Teraz chcę sprawdzić czy w $query jest chociaż jeden napis, który zawiera w sobie tekst „capacity”. Rozsądne wydawałoby się:

$query -contains 'capacity’

… ale wynik to $false ! Dlaczego!? Oto odpowiedż: Czytaj dalej »

By Rafał Kraik in Power Shell

Przenoszenie raportów między serwerami Reporting Services

2014-08-05

Oooo ładne narzędzie do migracji raportów z jednego serwera RS do innego. Filozofia dość prosta:

1. Podłącz się do istniejącego Reporting Services i wybierz jaki katalog/raporty zeskryptować

2. Uruchom wygenerowane skrypty na innym serwerze Reporting Services.

Link do programu http://execsql.org/rs-scripter-tool-handy-tool-to-create-deployment-script-for-reporting-services

By Rafał Kraik in SSRS

Zmiana trace na extendend events

2014-07-09

Ładny artykuł znalazłem….

Załóżmy, że masz trace, który zbiera co należy, ale chcesz zamiast niego mieć sesję extendent events. Tylko jak zdefiniować filtry, powybierać eventy itp:

http://msdn.microsoft.com/en-us/library/ff878114.aspx

By Rafał Kraik in SQL 2012

MSDTC – The Transaction Manager is not available

2014-06-30

Na clustrowej instancji SQL job kończył się komunikatem:

Description: The SSIS Runtime has failed to start the distributed transaction due to error 0x8004D01B „The Transaction Manager is not available.”. The DTC transaction failed to start. This could occur because the MSDTC Service is not running.  End Error  DTExec: The package execution returned DTSER_FAILURE (1). 

Ameryki w tym nie ma. Komunikat mówi o sprawdzeniu, czy MSDTC działa poprawnie. W razie potrzeby można wykonać restart usługi MSDTC w clustrze, co zostanie oznaczone w windows application log:

msdtc_restsrt

Pierwszy komunikat mówi o reinicjalizacji usługi:

Attempting to initialize Microsoft Distributed Transaction Coordinator (MS DTC). This is an informational message only. No user action is required.

a drugi o jej zakończeniu

Recovery of any in-doubt distributed transactions involving Microsoft Distributed Transaction Coordinator (MS DTC) has completed. This is an informational message only. No user action is required.

 

By Rafał Kraik in SQL