MSDTC – zagadkowa usługa

2014-09-05

MSDTC jest jedną z bardziej tajemniczych usług wykorzystywaną przez między innymi MS SQL server. Administrator Windows woli tego nie dotykać, bo to SQL, a administrator SQL uparcie twierdzi, że to komponent modelu COM, więc Windows…

Ponieważ jednak w przypadku problemów z MSDTC cierpi baza danych czasami trzeba wziąć zadanie w swoje ręce. W moim przypadku uruchamiana była procedura, która miała zmodyfikować dane na serwerze SQL zdalnym. Ta procedura wywoływana była w lokalnym triggerze. Jest to transakcja rozproszona i MSDTC jestt tu konieczne. Polecenia kończyły się błędem:

OLE DB provider „SQLNCLI10” for linked server „XYZ” returned message „The partner transaction manager has disabled its support for remote/network transactions.”.

Msg 7391, Level 16, State 2, Procedure SyncClientList, Line 42 The operation could not be performed because OLE DB provider „SQLNCLI10” for linked server „XYZ” was unable to begin a distributed transaction.

Po piwersze należy sprawdzić czy usługa Distributed Transaction Coordinator jest włączona na obu serwerach.

Po drugie skonfigurować obie usługi do tego, aby ze sobą rozmawiały. W tym celu:

1. Start >> Administrative tools >> Component Services

2. Kliknij prawym na Local DTC i wybierz properties
msdtc1

 

 

 

 

 

3. Skonfiguruj opcje, jak widać na obrazku

msdtc2

 

 

 

 

 

 

 

 

Czytaj dalej »

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