13/06/2010
Mange databaseadministratorer (DBA'er) og udviklere, der arbejder med SQL Server, har på et tidspunkt stødt på en frustrerende og tilsyneladende ulogisk fejlmeddelelse. Du er i SQL Server Management Studio (SSMS), klar til at konfigurere eller redigere en vedligeholdelsesplan. Du dobbeltklikker på en 'Notify Operator Task' for at tildele en operatør, der skal modtage en e-mail-notifikation, og i stedet for at se den velkendte editor, bliver du mødt af en fejl: "Cannot show the editor for this task." Efterfulgt af en mere teknisk forklaring: "Property IsMailHost is not available for Database '[msdb]'." Denne situation kan være forvirrende, især når du ved, at din Database Mail er konfigureret korrekt og fungerer upåklageligt. Denne artikel dykker ned i årsagerne til denne specifikke fejl og giver dig konkrete løsninger, så du kan komme videre med dit arbejde.

Forståelse af Fejlen: Hvad er 'IsMailHost'?
For at løse problemet er det vigtigt først at forstå, hvad fejlen egentlig betyder. 'Notify Operator Task' er en funktion i SQL Server, der er tæt integreret med Database Mail-systemet. Når du forsøger at åbne editoren for denne opgave i SSMS, udfører værktøjet en række baggrundstjek for at sikre, at alt er klar til at sende e-mails.
Et af disse tjek er at verificere egenskaben (property) IsMailHost for msdb-databasen. Denne egenskab er i bund og grund et simpelt flag (sandt/falsk), der fortæller SQL Server, om msdb er konfigureret som en mail-vært, hvilket er en forudsætning for, at Database Mail kan fungere. Når SSMS melder, at denne egenskab "ikke er tilgængelig", er det ikke nødvendigvis fordi, den ikke eksisterer, men snarere fordi den version af SSMS, du bruger, har et problem med at aflæse den korrekt. Dette skaber en konflikt: Selve SQL Server-motoren ved, at Database Mail er aktiv (og du kan bekræfte det via PowerShell eller ved at sende test-e-mails), men klientværktøjet (SSMS) kan ikke få bekræftet denne information og nægter derfor at åbne editoren.
Hovedårsagen: En Kendt Bug i Ældre SSMS-versioner
Den primære årsag til denne fejl er ikke en fejlkonfiguration på din server, men derimod en velkendt bug i visse versioner af SSMS (SQL Server Management Studio). Problemet blev især observeret i versioner omkring SSMS 13.x, som blev udgivet sammen med SQL Server 2016. Brugerrapporter og tekniske undersøgelser har vist, at den version af SMO (SQL Server Management Objects) – det bibliotek, som SSMS bruger til at interagere med SQL Server – der fulgte med disse builds, havde en fejl i måden, den forespurgte IsMailHost-egenskaben på.
Dette forklarer, hvorfor du kan opleve følgende scenarie:
- En nyere version af SSMS (f.eks. version 17, 18 eller nyere) kan åbne den samme 'Notify Operator Task' på den samme SQL Server 2016-instans uden problemer.
- En ældre version af SSMS (f.eks. fra SQL Server 2008 R2) kan også åbne opgaven uden fejl.
- PowerShell-kommandoer, der bruger en anden eller mere direkte adgang til SMO, kan korrekt aflæse egenskaben som 'True'.
Problemet ligger altså isoleret i klientværktøjet, ikke i serveren. At forstå dette er nøglen til at finde den rigtige løsning.
Effektive Løsninger og Workarounds
Heldigvis er der flere måder at løse eller omgå dette problem på. Den bedste løsning afhænger af dine rettigheder og muligheder i dit arbejdsmiljø.
Løsning 1: Opgrader SSMS (Stærkt Anbefalet)
Den absolut bedste og mest permanente løsning er at opdatere din version af SQL Server Management Studio. SSMS er et selvstændigt værktøj og kan opgraderes uafhængigt af selve SQL Server-databasemotoren. At opgradere SSMS vil ikke påvirke din database eller dine serverindstillinger.
- Download den seneste version: Gå til den officielle Microsoft-hjemmeside og download den nyeste stabile version af SSMS.
- Installer opgraderingen: Kør installationsprogrammet. Det vil enten opgradere din eksisterende installation eller installere den nye version side om side, afhængigt af versionerne.
- Genstart og test: Efter installationen skal du åbne det nye SSMS og oprette forbindelse til din server. Naviger til din vedligeholdelsesplan og prøv at åbne 'Notify Operator Task' igen. Problemet bør nu være løst.
Denne metode løser ikke kun dette specifikke problem, men giver dig også adgang til de nyeste funktioner, ydeevneforbedringer og sikkerhedsrettelser i SSMS.
Løsning 2: Brug T-SQL som en Workaround
Hvis du af en eller anden grund ikke kan eller må opgradere SSMS, kan du administrere notifikationsopgaven direkte ved hjælp af T-SQL. Vedligeholdelsesplaner er i virkeligheden SQL Server Agent-jobs, og hver opgave i planen er et jobtrin (job step). Du kan redigere disse jobtrin manuelt.
- Find det relevante job: I SSMS, under 'SQL Server Agent' -> 'Jobs', finder du et job med et navn, der svarer til din vedligeholdelsesplan.
- Identificer jobtrinnet: Højreklik på jobbet og vælg 'Properties'. Gå til fanen 'Steps'. Find det trin, der svarer til din 'Notify Operator Task'.
- Rediger kommandoen: Kommandoen for dette trin vil typisk være en kald til en systemprocedure. Du kan bruge
sp_update_jobsteptil at ændre parametrene, såsom hvilken operatør der skal notificeres. Dette er en mere avanceret metode og kræver forsigtighed.
Dette er en effektiv workaround, men den er mindre brugervenlig end den grafiske editor og bør kun anvendes, hvis du er komfortabel med T-SQL og SQL Server Agent-strukturen.
Løsning 3: Brug en anden version af SSMS (Midlertidig)
Hvis du har adgang til en anden computer med en anden (enten ældre eller nyere) version af SSMS, kan du midlertidigt bruge den til at redigere din vedligeholdelsesplan. Dette er ikke en permanent løsning, men kan være en hurtig udvej, hvis du blot skal foretage en enkelt ændring.
Sammenligning af Løsninger
For at give et hurtigt overblik er her en tabel, der sammenligner de forskellige tilgange.
| Løsning | Fordele | Ulemper | Anbefales til |
|---|---|---|---|
| Opgrader SSMS | Permanent løsning, løser også andre bugs, giver adgang til nye funktioner. | Kræver rettigheder til at installere software. | Alle brugere. Dette er den foretrukne metode. |
| Brug T-SQL | Kræver ingen installation, giver fuld kontrol. | Komplekst, højere risiko for fejl, mindre intuitivt. | Erfarne DBA'er i miljøer med restriktioner på softwareinstallation. |
| Brug en anden SSMS-version | Hurtig løsning på et akut problem. | Ikke en permanent løsning, kræver adgang til en anden maskine/installation. | Nødsituationer hvor en hurtig ændring er nødvendig. |
Ofte Stillede Spørgsmål (FAQ)
Påvirker en opgradering af SSMS min SQL Server-database?
Nej, slet ikke. SSMS er et klientværktøj, der bruges til at administrere serveren. At opdatere det er som at opdatere din webbrowser – det ændrer ikke på de hjemmesider, du besøger. Dine databaser, jobs og konfigurationer på serveren forbliver uberørte.
Hvorfor kan PowerShell se 'IsMailHost'-egenskaben, når SSMS ikke kan?
Dette skyldes, at SSMS og PowerShell kan bruge forskellige versioner eller implementeringer af SMO-bibliotekerne. Den specifikke version, der var bundtet med de fejlramte SSMS-builds, indeholdt den fejl, som forhindrede den i at læse egenskaben, mens andre værktøjer ikke havde denne fejl.
Er dette problem stadig relevant i de nyeste versioner af SQL Server?
Fejlen var specifik for SSMS-klientværktøjet, ikke SQL Server-motoren. Problemet er for længst blevet rettet i nyere versioner af SSMS (typisk fra version 16.x og frem). Hvis du installerer den seneste SSMS i dag, vil du ikke støde på dette problem, uanset om du forbinder til en SQL Server 2016, 2019 eller 2022.
Afslutningsvis er fejlen "Property IsMailHost is not available" et klassisk eksempel på et problem, hvor fejlen ikke ligger der, hvor man først tror. I stedet for at lede efter konfigurationsfejl på serveren, ligger løsningen i at opdatere det klientværktøj, du bruger. Ved at opgradere SSMS sikrer du ikke kun en løsning på dette specifikke problem, men også et mere stabilt, sikkert og funktionelt arbejdsmiljø for fremtiden.
Hvis du vil læse andre artikler, der ligner SSMS Fejl: Kan ikke vise editoren for denne opgave, kan du besøge kategorien Sundhed.
