SSMS 18 GA start niet op

Na het installeren van SQL Server Management Studio is die niet te gebruiken. Na het aanklikken van de snelkoppeling verschijnt heel kort het ‘splash’-screen dat direct weer verdwijnt, samen met het gehele SSMS-proces.

Op databaseservers waar ook de SQL Server database-engine draait hebben we dit probleem nog niet gezien, maar wel op (management-) servers waar alleen SSMS wordt geïnstalleerd.

De ‘oplossing’ (work-around is een beter woord wellicht) is simpel: vervang een dll door één met dezelfde naam uit een andere map. Dit werkt in afwachting van een echte oplossing.

De volledige uitleg vind je op deze site: https://dba.stackexchange.com/questions/237086/sql-server-management-studio-18-wont-open-only-splash-screen-pops-up

 

Bug in SSMS 18 GA, OK-knop ontbreekt

Na de update van SQL Server Management Studio is het interessante uitdaging om een SSIS-catalog aan te maken.

Nadat alles is ingevuld, inclusief een moeilijk wachtwoord voor de encryptie ontdek je dat de OK-knop ontbreekt…. 

Gelukkig hebben we scripts:

Zorg eerst dat is ‘CLR Enabled’ aan staat binnen de SQL-instantie:
--tsql
--=====================================
exec sp_configure 'clr enabled',1
reconfigure
go

Voer daarna onderstaand Powershell-script uit. Vergeet niet het wachtwoord voor de encryptie aan te passen!

## Powershell

######################################

# Load the IntegrationServices Assembly 

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Management.IntegrationServices") 

# Store the IntegrationServices Assembly namespace

$ISNamespace = "Microsoft.SqlServer.Management.IntegrationServices" 

Write-Host "Connecting to server ..." 

# Create a connection to the server 

$sqlConnectionString = "Data Source=localhost;Initial Catalog=master;Integrated Security=SSPI;" 

$sqlConnection = New-Object System.Data.SqlClient.SqlConnection $sqlConnectionString 

# Create the Integration Services object 

$integrationServices = New-Object $ISNamespace".IntegrationServices" $sqlConnection 

# Provision a new SSIS Catalog 

$catalog = New-Object $ISNamespace".Catalog" ($integrationServices, "SSISDB", "NZdmqU54xGyLwtGk026zrQvScCqa05O5UjxVrQDa") 

$catalog.Create()

Uitgebreide jobhistorie opvragen

Binnen SQL Server wordt gebruik gemaakt van jobs om onder andere de backups en het databaseonderhoud geautomatiseerd te verzorgen.
Van al deze jobs kun je de historie opvragen binnen de eigenschappen van die job.
In dit artikel leg ik uit hoe je die jobhistorie kunt bekijken, met name als die erg lang is en/of niet goed leesbaar.

In onderstaand voorbeeld zie je de job die backups van de systemdatabases maakt. Als je ook de scripts van Ola Hallengren hebt geïnstalleerd dan komt dit je bekend voor. Je kunt natuurlijk ook je eigen job als voorbeeld gebruiken.

Vraag de eigenschappen op van de job ‘DatabaseBackup – SYSTEM_DATABASES – FULL’:

Klik op ‘View Job History’.
Klik op het plusje bij het tijdstip van de run die je wilt controleren om de step-details te openen:

Onderaan zie je de details van de run. Zeker bij gebruik van de scripts van Ola heb je uitgebreide logging, maar dit is soms niet goed uit te lezen in de jobhistory omdat de tekst te lang is.
Ola geeft standaard de optie om de historie-details weg te schrijven in een logfile en daarvan maak ik dankbaar gebruik.
Soms echter ben ik bij een klant waar ik geen toegang heb tot het OS, en moet ik een andere manier vinden om deze belangrijke info te kunnen lezen. Gelukkig kan dat, maar daarvoor moet je de job aanpassen.

Open de job die je wilt aanpassen:

Klik ‘Steps’

Selecteer de gewenste job-step en klik op Edit (of dubbelklik op de job-step) om de eigenschappen te openen:

Klik op ‘Advanced’

Plaats vinkjes bij ‘Log to table’ en ‘Append output to existing entry in table’
Deze laatste optie is nodig bij jobs met meerdere steps om de historie van alle steps te bewaren (en niet alleen die van de laatste).
Klik OK en bewaar je wijzigingen in de job.
Done!

Nu het leuke, opvragen van de historie.
Dat is eenvoudig te doen met een query. Er is natuurlijk pas data te zien als de job gerund heeft, wacht dus even tot dat gedaan is.

select * from msdb.dbo.sysjobstepslogs
order by log_id desc

Zoek de log_id van de run die je wilt bekijken en kopieer die.
Pas de output van het queryscherm aan zodat die geen tabel geeft (‘results to grid’) maar een tekst (‘results to text’), dat kan onder andere via CTRL+T.
Voer daarna de volgende query uit:

select log_id, [log] from msdb.dbo.sysjobstepslogs
where log_id=<gekopieerde log_id>
order by log_id desc

Soms is dit niet genoeg om alle tekst weer te geven; results to text geeft bij default maximaal 256 karakters weer.
Dit kun je aanpassen naar de maximale waarde van 8192 in de query-opties:
Klik in het hoofdmenu van SSMS op ‘Query’ en dan onderaan op ‘Query Options’:

Pas de aangeven waarde onderaan aan naar de maximale waarde van  8192.
Wil je deze waarde voortaan voor alle queries gebruiken, stel het dan in via ‘Tools’ in de menubalk en dan ‘Options’:

Soms zijn ook deze 8192 karakters niet voldoende. Dan is er nog een methode waarbij je de output kunt exporteren naar een andere lokatie, bijvoorbeeld de harddisk op de machine waar je SSMS gestart hebt.
Daarvoor gebruiken we de import-export wizard.
Klik met de rechter muisknop (bijvoorbeeld) op de MSDB-database waar alle jobhistorie wordt bewaard:

Selecteer ‘Tasks’, ‘Export Data…’

Selecteer als bron ‘SQL Server Native Client’ (onderaan meestal) en klik ‘Next’

Selecteer bij ‘Destination’ een ‘Flat File Destination’ en geef een bestandsnaam op.
Vergeet niet de vinkjes aan resp. uit te zetten bij ‘Unicode’ en ‘Column names in the first datarow’.
Klik ‘Next’

Selecteer ‘Write a query…..’ en klik ‘Next’.

Vul de eerder gebruikte query in en klik ‘Next’.

Klik ‘Finish’
De export wordt nu uitgevoerd:

Het resultaat is te vinden in het bestand dat je als ‘Destination’ hebt aangegeven.

Veel succes!

 

 

Availability Groups en DTC/cross-database transactions

Veel applicaties maken gebruik van verschillende databases die onderling of in code aan elkaar gekoppeld zijn. In de loop van de tijd kan een geheel aan cross-database queries en stored-procedures zijn ontstaan die prima werken in een omgeving met een enkele databaseserver of in een databasecluster (met shared storage tussen de nodes). Migratie naar een hoog-beschikbare SQL Server-omgeving is bij veel bedrijven een wens en AlwaysOn Availability Groups zijn in veel gevallen een uitstekende keuze.

Installatie en configuratie van AlwaysOn Availability Groups lijkt eenvoudig en heeft veel voordelen, maar kan tot onverwachte problemen leiden waar al veel bedrijven (te) laat achter zijn gekomen. Vandaar deze update.

Ondersteuning van Availabity Groups binnen SQL Server en zg. cross-database en/of distributed transactions

SQL Server 2014 en ouder
Geen ondersteuning en grote kans op dataverlies en corruptie zonder dat dat tijdig ontdekt of gemeld wordt.

SQL Server 2016
Cross-database transactions en MSDTC-transacties worden beperkt en onder strikte voorwaarden ondersteund. Lees het volgende MSDN-artikel om onverwachte verrassingen te voorkomen: https://msdn.microsoft.com/en-us/library/ms366279.aspx

SQL Server 2017
MSDTC-transacties worden bijna volledig ondersteund. Cross-database transactions ook, maar allebei met duidelijke beperkingen bij databasemirroring en (dus ook) availabilitygroups. Meer informatie: https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/transactions-always-on-availability-and-database-mirroring

 

CU’s voor SQL Server installeren, gewoon doen! (?)

Vroeger installeerde elke zichzelf respecterende DBA alleen servicepacks voor SQL Server, liefst nadat gebleken was dat die stabiel waren.

Cumulative Update-packages waren er natuurlijk ook, maar daarvan werd door Microsoft aangeraden die alleen te installeren als er een probleem optrad dat door een van de updates in de CU werd opgelost. Het motto was niet voor niets: ‘If it isn’t broken, don’t fix it!‘. En helaas gebeurde het zo af en toe dat installatie van een CU meer problemen opleverde dat er opgelost werden….

Dat was vroeger.

Nu, vanaf 2016, heeft Microsoft de strategie op dat vlak aangepast. CU’s worden nu net zo goed getest als Servicepacks, en Microsoft raadt nu juist aan alle CU’s te installeren zodra die beschikbaar zijn. Naast bugfixes bevat een CU vaak ook allemaal aanpassingen die de werking van SQL Server ten goede komen.

Misschien tijd voor een nieuw motto? ‘If it isn’t broken, improve it!

Zie ook: Announcing updates to the SQL Server Incremental Servicing Model (ISM) | SQL Server Release Services

What is er nieuw in SQL Server 2016

SQL Server 2016 is een tijdje geleden gereleased. Het bevat diverse nieuwe mogelijkheden en features, maar is dat voor u interessant?

De kans is heel groot dat het voor u meerwaarde heeft om te upgraden*). Wilt u weten wat er veranderd is? Kijk dan hier:

What’s New in SQL Server 2016 | Microsoft Docs

* Het is verstandig om voordat u een upgrade of migratie naar SQL Server 2016 uitvoert, goed te checken wat dat voor UW workload betekent. Dit is bij deze versie nog veel belangrijker dan met voorgaande versies. Als er onvoldoende voorgaand onderzoek wordt gedaan dan kan het zijn dat na migratie de performance (veel) lager is dan verwacht. Dat kan echter voorkomen worden, uw performance kan sterk verbeterd worden. Maar alleen met de juiste voorbereidingen.

SQL 2016 SP1 brings enterprise features to other editions

Service Pack 1 van SQL Server 2016 maakt een aantal features van de enterprise-editie beschikbaar in de andere edities, zelfs in de express-editie!
Denk daarbij aan datacompressie, tabel-partitioning en ‘always encrypted’.

Een aantal handige enterprsie-features blijven echter alleen beschikbaar in de enterprise-editie, zoals bijvoorbeeld de online index-rebuilds.

Toch zijn de nieuwe features in de goedkopere editities voor veel bedrijven een reden om (nog) niet over te stappen op de enterprise-editie, en dus kunnen deze bedrijven veel geld aan licenties besparen.

Pas echter wel op: na het in gebruik nemen van de nieuwe features kan het de-installeren van het servicepack tot grote problemen en datacorruptie leiden.

Zie ook https://technet.microsoft.com/nl-nl/windows/cc645993(v=sql.90) and https://www.microsoft.com/en-us/sql-server/sql-server-editions