Wat is er nieuw in Azure SQL Database & SQL Managed Instance?

VAN TOEPASSING OP: Azure SQL Database Azure SQL Managed Instance

In dit artikel vindt Azure SQL Database en functies van Azure SQL Managed Instance die momenteel beschikbaar zijn als openbare preview. Zie SQL Database Managed Instance SQL managed instance SQL Database & SQL voor meer informatie en verbeteringen. Zie Service-updates voor updates en verbeteringen in andere Azure-services.

Wat is er nieuw?

Documentatie voor Azure SQL Database en Azure SQL Managed Instance is opgesplitst in afzonderlijke secties. We hebben ook bijgewerkt hoe we verwijzen naar een beheerd exemplaar van Azure SQL Database beheerd exemplaar naar Azure SQL Managed Instance.

We hebben dit gedaan omdat sommige functies en functionaliteiten sterk variëren tussen één database en een beheerd exemplaar. Het wordt steeds lastiger om complexe nuances tussen Azure SQL Database en Azure SQL Managed Instance uit te leggen in afzonderlijke gedeelde artikelen.

Deze verduidelijking tussen de verschillende Azure SQL-producten moet het werken met de SQL Server-database-engine in Azure vereenvoudigen en stroomlijnen, of het nu gaat om één beheerde database in Azure SQL Database, een volledig volwassen beheerd exemplaar dat meerdere databases host in Azure SQL Managed Instance of het bekende on-premises SQL Server-product dat wordt gehost op een virtuele machine in Azure.

Houd er rekening mee dat dit een werk in uitvoering is en dat nog niet elk artikel is bijgewerkt. Documentatie voor T-SQL-instructies (Transact-SQL), opgeslagen procedures en veel functies die worden gedeeld tussen Azure SQL Database en Azure SQL Managed Instance zijn bijvoorbeeld nog niet voltooid. Daarom zijn we blij met uw geduld als we doorgaan met het verduidelijken van de inhoud.

Deze tabel bevat een snelle vergelijking van de wijziging in terminologie:

Nieuwe term Vorige term Uitleg
Azure SQL Managed Instance Azure SQL Database beheerd exemplaar Azure SQL Managed Instance is een eigen product binnen de Azure SQL-familie, in plaats van alleen een implementatieoptie binnen Azure SQL Database.
Azure SQL Database Azure SQL Database individuele database Tenzij expliciet anders aangegeven, bevat de productnaam Azure SQL Database zowel individuele databases als databases die zijn geïmplementeerd in een elastische pool.
Azure SQL Database Azure SQL Database elastische pool Tenzij expliciet anders aangegeven, bevat de productnaam Azure SQL Database zowel individuele databases als databases die zijn geïmplementeerd in een elastische pool.
Azure SQL Database Azure SQL Database Hoewel de term hetzelfde blijft, geldt deze nu alleen voor implementaties met één database en elastische pool, en omvat deze niet het beheerde exemplaar.
Azure SQL N.v.t. Dit verwijst naar de familie van SQL Server-database-engineproducten die beschikbaar zijn in Azure: Azure SQL Database, Azure SQL Managed Instance en SQL Server op azure-VM's.

Functies in openbare preview

Functie Details
Taken voor Elastic Database Zie Elastische taken maken, configureren en beheren voor meer informatie.
Elastische query’s Zie Overzicht van elastische query's voor meer informatie.
Elastische transacties Zie Gedistribueerde transacties over clouddatabases voor meer informatie.
Queryeditor in de Azure Portal Zie Use the Azure Portal's SQL query editor to connect and query data(De query-editor van de Azure Portal gebruiken om verbinding te maken en query's uit te voeren op gegevens) voor meer informatie.
SQL Analytics Zie Azure SQL Analytics voor meer informatie.
Query Store-hints Zie Query Store-hints voor meer informatie.
--- ---

Nieuwe functies

SQL Updates voor Managed Instance H2 2019

SQL Updates voor Managed Instance H1 2019

De volgende functies zijn ingeschakeld in het implementatiemodel SQL Managed Instance in H1 2019:

Bekende problemen

Probleem Datum ontdekt Status Datum opgelost
Het wijzigen van het verbindingstype heeft geen invloed op verbindingen via het eindpunt van de failovergroep Jan 2021 Heeft een tijdelijke oplossing
Procedure sp_send_dbmail tijdelijk mislukken wanneer @query de parameter wordt gebruikt Jan 2021 Heeft een tijdelijke oplossing
Gedistribueerde transacties kunnen worden uitgevoerd nadat het beheerde exemplaar is verwijderd uit de vertrouwensgroep van de server Okt 2020 Heeft een tijdelijke oplossing
Gedistribueerde transacties kunnen niet worden uitgevoerd na een bewerking voor het schalen van een beheerd exemplaar Okt 2020 Heeft een tijdelijke oplossing
BULK INSERT / OPENROWSET in Azure SQL-instructie BACKUP / in Managed Instance kan azure AD-identiteit niet gebruiken om te verifiëren RESTORE bij Azure Storage Sep 2020 Heeft een tijdelijke oplossing
Service-principal heeft geen toegang tot Azure AD en AKV Aug 2020 Heeft een tijdelijke oplossing
Het herstellen van handmatige back-ups zonder CHECKSUM kan mislukken Mei 2020 Opgelost Juni 2020
Agent reageert niet meer bij het wijzigen, uitschakelen of inschakelen van bestaande taken Mei 2020 Opgelost Juni 2020
Machtigingen voor de resourcegroep worden niet toegepast op SQL managed instance Februari 2020 Opgelost November 2020
Beperking van handmatige failover via de portal voor failovergroepen Jan 2020 Heeft een tijdelijke oplossing
SQL Agent-rollen hebben expliciete EXECUTE-machtigingen nodig voor niet-sysadmin-aanmeldingen Dec 2019 Heeft een tijdelijke oplossing
SQL Agenttaken kunnen worden onderbroken door het opnieuw opstarten van het agentproces Dec 2019 Opgelost Maart 2020
Azure AD-aanmeldingen en -gebruikers worden niet ondersteund in SSDT November 2019 Geen tijdelijke oplossing
In-memory OLTP-geheugenlimieten worden niet toegepast Okt 2019 Heeft een tijdelijke oplossing
Fout geretourneerd tijdens het verwijderen van een bestand dat niet leeg is Okt 2019 Heeft een tijdelijke oplossing
Servicelaag wijzigen en exemplaarbewerkingen maken worden geblokkeerd door doorlopend databaseherstel Sep 2019 Heeft een tijdelijke oplossing
Resource Governor op Bedrijfskritiek servicelaag moeten mogelijk opnieuw worden geconfigureerd na een failover Sep 2019 Heeft een tijdelijke oplossing
Dialoogvensters voor Service Broker database moeten opnieuw worden geherinialiseerd na de upgrade van de servicelaag Aug 2019 Heeft een tijdelijke oplossing
Imitatie van Azure AD-aanmeldingstypen wordt niet ondersteund Jul 2019 Geen tijdelijke oplossing
@query parameter wordt niet ondersteund in sp_send_db_mail Apr 2019 Opgelost Jan 2021
Transactionele replicatie moet opnieuw worden geconfigureerd na geo-failover Maart 2019 Geen tijdelijke oplossing
Tijdelijke database wordt gebruikt tijdens herstelbewerking Heeft een tijdelijke oplossing
TEMPDB-structuur en -inhoud worden opnieuw gemaakt Geen tijdelijke oplossing
Overschrijding van opslagruimte met kleine databasebestanden Heeft een tijdelijke oplossing
GUID-waarden die worden weergegeven in plaats van databasenamen Heeft een tijdelijke oplossing
Foutenlogboeken worden niet persistent gemaakt Geen tijdelijke oplossing
Transactiebereik voor twee databases binnen hetzelfde exemplaar wordt niet ondersteund Heeft een tijdelijke oplossing Maart 2020
CLR-modules en gekoppelde servers kunnen soms niet verwijzen naar een lokaal IP-adres Heeft een tijdelijke oplossing
Databaseconsistentie wordt niet geverifieerd met DBCC CHECKDB na het herstellen van de database vanuit Azure Blob Storage. Opgelost November 2019
Herstel naar een bepaald tijdstip van de database van Bedrijfskritiek naar Algemeen-laag slaagt niet als de brondatabase in-memory OLTP bevat. Opgelost Okt 2019
Database mailfunctie met externe (niet-Azure) e-mailservers met behulp van een beveiligde verbinding Opgelost Okt 2019
Ingesloten databases die niet worden ondersteund in SQL Managed Instance Opgelost Aug 2019

Het wijzigen van het verbindingstype heeft geen invloed op verbindingen via het eindpunt van de failovergroep

Als een exemplaar deelneemt aan een groep voor automatische failover, wordt het wijzigen van het verbindingstype van het exemplaar niet van kracht voor de verbindingen die tot stand zijn gebracht via het listener-eindpuntvan de failovergroep.

Tijdelijke oplossing: u kunt de groep voor automatische failover neerzetten en opnieuw maken nadat u het verbindingstype hebt veranderd.

Procedure sp_send_dbmail tijdelijk mislukken wanneer @query de parameter wordt gebruikt

Procedure sp_send_dbmail kan tijdelijk mislukken wanneer de parameter wordt @query gebruikt. Wanneer dit probleem optreedt, mislukt elke tweede uitvoering van de procedure sp_send_dbmail fout en Msg 22050, Level 16, State 1 bericht Failed to initialize sqlcmd library with error number -2147467259 . Als u deze fout goed wilt zien, moet de procedure worden aangeroepen met de standaardwaarde 0 voor de parameter , anders wordt de fout @exclude_query_output niet doorgegeven. Dit probleem wordt veroorzaakt door een bekende fout met betrekking tot het sp_send_dbmail gebruik van imitatie en verbindingsgroepering. U kunt dit probleem oplossen door code te verpakken voor het verzenden van e-mail naar een logica voor opnieuw proberen die afhankelijk is van de uitvoerparameter @mailitem_id . Als de uitvoering mislukt, is de parameterwaarde NULL. Dit geeft aan dat nog één keer moet worden aangeroepen om een e-mailbericht sp_send_dbmail te verzenden. Hier is een voorbeeld van deze logica voor opnieuw proberen.

CREATE PROCEDURE send_dbmail_with_retry AS
BEGIN
    DECLARE @miid INT
    EXEC msdb.dbo.sp_send_dbmail
        @recipients = 'name@mail.com', @subject = 'Subject', @query = 'select * from dbo.test_table',
        @profile_name ='AzureManagedInstance_dbmail_profile', @execute_query_database = 'testdb',
        @mailitem_id = @miid OUTPUT

    -- If sp_send_dbmail returned NULL @mailidem_id then retry sending email.
    --
    IF (@miid is NULL)
    EXEC msdb.dbo.sp_send_dbmail
        @recipients = 'name@mail.com', @subject = 'Subject', @query = 'select * from dbo.test_table',
        @profile_name ='AzureManagedInstance_dbmail_profile', @execute_query_database = 'testdb',
END

Gedistribueerde transacties kunnen worden uitgevoerd nadat het beheerde exemplaar is verwijderd uit de vertrouwensgroep van de server

Vertrouwensgroepen van servers worden gebruikt om een vertrouwensrelatie tot stand te laten komen tussen beheerde exemplaren die vereist zijn voor het uitvoeren van gedistribueerde transacties. Nadat u Managed Instance hebt verwijderd uit de vertrouwensgroep van de server of nadat u de groep hebt verwijderd, kunt u mogelijk nog steeds gedistribueerde transacties uitvoeren. Er is een tijdelijke oplossing die u kunt toepassen om ervoor te zorgen dat gedistribueerde transacties zijn uitgeschakeld en dat door de gebruiker geïnitieerde handmatige failover op managed instance is.

Gedistribueerde transacties kunnen niet worden uitgevoerd na een bewerking voor het schalen van een beheerd exemplaar

Bij schaalbewerkingen van beheerde exemplaren, waaronder het wijzigen van de servicelaag of het aantal vCores, worden de instellingen van de serververtrouwensgroep op de back-end opnieuw ingesteld en worden de lopende gedistribueerde transacties uitgeschakeld. Als tijdelijke oplossing kunt u een nieuwe serververtrouwensgroep verwijderen en maken op Azure Portal.

BULK INSERT- en BACKUP/RESTORE-instructies moeten SAS-sleutel gebruiken voor toegang tot Azure Storage

Op dit moment wordt het niet ondersteund om DATABASE SCOPED CREDENTIAL syntaxis met beheerde identiteit te gebruiken voor verificatie bij Azure Storage. Microsoft raadt u aan een shared access signature te gebruiken voor de databasereferentie, bij het openen van Azure Storage voor bulksgewijs invoegen, en BACKUP RESTORE instructies, of de functie OPENROWSET . Bijvoorbeeld:

CREATE DATABASE SCOPED CREDENTIAL sas_cred WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
 SECRET = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=2016-12-29T16:55:34Z***************';
GO
CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
  WITH ( TYPE = BLOB_STORAGE, LOCATION = 'https://****************.blob.core.windows.net/invoices', CREDENTIAL= sas_cred );
GO
BULK INSERT Sales.Invoices FROM 'inv-2017-12-08.csv' WITH (DATA_SOURCE = 'MyAzureBlobStorage');

Zie Voor een ander voorbeeld van het gebruik van met een BULK INSERT SAS-Shared Access Signature voor verificatie bij opslag.

Service-principal heeft geen toegang tot Azure AD en AKV

In sommige gevallen kan er een probleem zijn met de service-principal die wordt gebruikt voor toegang tot Azure AD- Azure Key Vault (AKV)-services. Als gevolg hiervan heeft dit probleem invloed op het gebruik van Azure AD-verificatie en Transparent Database Encryption (TDE) met SQL Managed Instance. Dit kan worden ervaren als een onregelmatige verbindingsprobleem of het niet kunnen uitvoeren van instructies zoals CREATE LOGIN/USER FROM EXTERNAL PROVIDER of EXECUTE AS LOGIN/USER . Het instellen van TDE met door de klant beheerde sleutel op een nieuwe Azure SQL Managed Instance werkt in sommige gevallen mogelijk ook niet.

Tijdelijke oplossing: om te voorkomen dat dit probleem optreedt op uw SQL Managed Instance voordat u updateopdrachten gaat uitvoeren, of als u dit probleem al hebt ondervonden na updateopdrachten, gaat u naar Azure Portal, gaat u naar de beheerderspagina van SQL Managed Instance Active Directory. Controleer of u het foutbericht 'Managed Instance needs a Service Principal to access Azure Active Directory. Klik hier om een service-principal te maken. Als dit foutbericht wordt weergegeven, klikt u erop en volgt u de stapsgewijs opgegeven instructies totdat deze fout is opgelost.

Het herstellen van handmatige back-ups zonder CHECKSUM kan mislukken

In bepaalde omstandigheden kan een handmatige back-up van databases die zijn gemaakt op een beheerd exemplaar zonder CHECKSUM, mogelijk niet worden hersteld. In dergelijke gevallen kunt u proberen de back-up te herstellen totdat u slaagt.

Tijdelijke oplossing: maak handmatige back-ups van databases op beheerde exemplaren met CHECKSUM ingeschakeld.

Agent reageert niet meer bij het wijzigen, uitschakelen of inschakelen van bestaande taken

In bepaalde omstandigheden kan het wijzigen, uitschakelen of inschakelen van een bestaande taak ertoe leiden dat de agent niet meer reageert. Het probleem wordt automatisch opgelost bij detectie, wat resulteert in een herstart van het agentproces.

Machtigingen voor de resourcegroep worden niet toegepast op SQL managed instance

Wanneer de Azure SQL rol Inzender voor beheerde exemplaren wordt toegepast op een resourcegroep (RG), wordt deze niet toegepast op SQL Managed Instance en heeft dit geen effect.

Tijdelijke oplossing: stel een inzendersrol SQL managed instance in voor gebruikers op abonnementsniveau.

Beperking van handmatige failover via de portal voor failovergroepen

Als een failovergroep meerdere exemplaren in verschillende Azure-abonnementen of resourcegroepen omvat, kan handmatige failover niet worden gestart vanuit het primaire exemplaar in de failovergroep.

Tijdelijke oplossing: start failover via de portal vanuit het geo-secundaire exemplaar.

SQL Agent-rollen hebben expliciete EXECUTE-machtigingen nodig voor niet-sysadmin-aanmeldingen

Als er niet-sysadmin-aanmeldingen worden toegevoegd aan vaste databaserollen van SQL Agent,bestaat er een probleem waarbij expliciete EXECUTE-machtigingen moeten worden verleend aan drie opgeslagen procedures in de hoofddatabase om deze aanmeldingen te laten werken. Als dit probleem is opgetreden, wordt het foutbericht 'The EXECUTE permission was denied on the object <object_name> (Microsoft SQL Server, Error: 229)' weergegeven.

Tijdelijke oplossing: wanneer u aanmeldingen toevoegt aan een vaste databaserol van een SQL Agent (SQLAgentUserRole, SQLAgentReaderRole of SQLAgentOperatorRole), voert u voor elk van de aanmeldingen die aan deze rollen zijn toegevoegd het onderstaande T-SQL-script uit om expliciet EXECUTE-machtigingen te verlenen aan de vermelde opgeslagen procedures.

USE [master]
GO
CREATE USER [login_name] FOR LOGIN [login_name];
GO
GRANT EXECUTE ON master.dbo.xp_sqlagent_enum_jobs TO [login_name];
GRANT EXECUTE ON master.dbo.xp_sqlagent_is_starting TO [login_name];
GRANT EXECUTE ON master.dbo.xp_sqlagent_notify TO [login_name];

SQL Agenttaken kunnen worden onderbroken door het opnieuw opstarten van het agentproces

(Opgelost in maart 2020) SQL elke keer dat een taak wordt gestart een nieuwe sessie, waardoor het geheugenverbruik geleidelijk toeneemt. Om te voorkomen dat de interne geheugenlimiet wordt bereikt, waardoor de uitvoering van geplande taken wordt geblokkeerd, wordt het agentproces opnieuw gestart zodra het geheugenverbruik de drempelwaarde bereikt. Dit kan ertoe leiden dat de uitvoering van taken die worden uitgevoerd op het moment van opnieuw opstarten, wordt onderbroken.

In-memory OLTP-geheugenlimieten worden niet toegepast

In Bedrijfskritiek servicelaag worden in sommige gevallen niet de maximale geheugenlimieten toegepast voor objecten die zijn geoptimaliseerd voor geheugen. SQL Met Managed Instance kan de werkbelasting meer geheugen gebruiken voor in-memory OLTP bewerkingen, wat van invloed kan zijn op de beschikbaarheid en stabiliteit van het exemplaar. Oltp-query's in het geheugen die de limieten bereiken, mislukken mogelijk niet onmiddellijk. Dit probleem wordt binnenkort opgelost. De query's die meer geheugen in-memory OLTP gebruiken, mislukken eerder als ze de limieten bereiken.

Tijdelijke oplossing: controleer het in-memory OLTP opslag met behulp van SQL Server Management Studio om ervoor te zorgen dat de werkbelasting niet meer dan het beschikbare geheugen gebruikt. Verhoog de geheugenlimieten die afhankelijk zijn van het aantal vCores of optimaliseer uw werkbelasting om minder geheugen te gebruiken.

Fout geretourneerd tijdens het verwijderen van een bestand dat niet leeg is

SQL Server en SQL managed instance toestaan dat een gebruiker een bestand dat niet leeg is, niet kan verwijderen. Als u probeert een bestand met een instructie te verwijderen, wordt de fout ALTER DATABASE REMOVE FILE Msg 5042 – The file '<file_name>' cannot be removed because it is not empty niet onmiddellijk geretourneerd. SQL Managed Instance blijft proberen het bestand te verwijderen en de bewerking mislukt na 30 minuten met Internal server error .

Tijdelijke oplossing: verwijder de inhoud van het bestand met behulp van de DBCC SHRINKFILE (N'<file_name>', EMPTYFILE) opdracht . Als dit het enige bestand in de bestandsgroep is, moet u gegevens verwijderen uit de tabel of partitie die aan deze bestandsgroep is gekoppeld voordat u het bestand verkleint en deze gegevens eventueel in een andere tabel/partitie laadt.

Servicelaag wijzigen en exemplaarbewerkingen maken worden geblokkeerd door doorlopend databaseherstel

Doorlopende instructie, migratieproces van Data Migration Service en ingebouwd herstel naar een bepaald tijdstip blokkeren het bijwerken van een servicelaag of het aanpassen van het bestaande exemplaar en het maken van nieuwe exemplaren totdat het herstelproces is RESTORE afgerond.

Het herstelproces blokkeert deze bewerkingen op de beheerde exemplaren en exemplaarpools in hetzelfde subnet waarin het herstelproces wordt uitgevoerd. De exemplaren in exemplaarpools worden niet beïnvloed. Bewerkingen voor het maken of wijzigen van de servicelaag mislukken niet of er t mislukt een time-out. Ze worden uitgevoerd zodra het herstelproces is voltooid of geannuleerd.

Tijdelijke oplossing: wacht totdat het herstelproces is uitgevoerd of annuleer het herstelproces als het maken of bijwerken van de servicelaag een hogere prioriteit heeft.

Resource Governor op Bedrijfskritiek servicelaag moeten mogelijk opnieuw worden geconfigureerd na een failover

De Resource Governor-functie waarmee u de resources kunt beperken die zijn toegewezen aan de werkbelasting van de gebruiker, classificeert mogelijk een bepaalde gebruikersworkload onjuist na een failover of een door de gebruiker geïnitieerde wijziging van de servicelaag (bijvoorbeeld de wijziging van de maximale vCore- of maximale opslaggrootte van het exemplaar).

Tijdelijke oplossing: voer periodiek uit of als onderdeel van een SQL Agent-taak die de SQL-taak uitvoert wanneer het exemplaar wordt gestart als u Resource Governor ALTER RESOURCE GOVERNOR RECONFIGURE .

Dialoogvensters voor Service Broker database moeten opnieuw worden geherinialiseerd na de upgrade van de servicelaag

Dialoogvensters voor Service Broker databaseoverschrijdende databases leveren de berichten niet meer aan de services in andere databases na de bewerking voor het wijzigen van de servicelaag. De berichten gaan niet verloren en zijn te vinden in de wachtrij van de afzender. Elke wijziging van de vCores- of exemplaaropslaggrootte in SQL Managed Instance zorgt ervoor dat een waarde service_broke_guid in de weergave sys.databases wordt gewijzigd voor alle databases. Alle DIALOG gemaakte met behulp van een BEGIN DIALOG-instructie die verwijst naar Service Brokers in een andere database stopt met het leveren van berichten aan de doelservice.

Tijdelijke oplossing: stop alle activiteiten die gebruik maken van databaseoverschrijdende Service Broker dialoogvensters voordat u een servicelaag bijwerkt, en start deze later opnieuw. Als er resterende berichten zijn die niet zijn bezorgd na een wijziging in de servicelaag, leest u de berichten uit de bronwachtrij en verzenden ze opnieuw naar de doelwachtrij.

Imitatie van Azure AD-aanmeldingstypen wordt niet ondersteund

Imitatie met EXECUTE AS USER EXECUTE AS LOGIN behulp van of van de volgende Azure Active Directory -principals (Azure AD) wordt niet ondersteund:

  • Azure AD-gebruikers met aliassen. In dit geval wordt de volgende fout geretourneerd: 15517 .
  • Azure AD-aanmeldingen en -gebruikers op basis van Azure AD-toepassingen of service-principals. In dit geval worden de volgende fouten geretourneerd: 15517 en 15406 .

@query parameter wordt niet ondersteund in sp_send_db_mail

De @query parameter in de sp_send_db_mail werkt niet.

Transactionele replicatie moet opnieuw worden geconfigureerd na geo-failover

Als Transactionele replicatie is ingeschakeld voor een database in een groep voor automatische failover, moet de beheerder van het SQL Managed Instance alle publicaties op de oude primaire database opsorten en deze opnieuw configureren op de nieuwe primaire database nadat er een failover naar een andere regio is opgetreden. Zie Replicatie voor meer informatie.

Azure AD-aanmeldingen en -gebruikers worden niet ondersteund in SSDT

SQL Server Data Tools bieden geen volledige ondersteuning voor Azure AD-aanmeldingen en -gebruikers.

Tijdelijke database wordt gebruikt tijdens herstelbewerking

Wanneer een database wordt hersteld in SQL Managed Instance, maakt de herstelservice eerst een lege database met de gewenste naam om de naam aan het exemplaar toe te wijzen. Na enige tijd wordt deze database verwijderd en wordt het herstellen van de werkelijke database gestart.

De database met de status Herstellen heeft tijdelijk een willekeurige GUID-waarde in plaats van naam. De tijdelijke naam wordt gewijzigd in de gewenste naam die is opgegeven in de instructie RESTORE zodra het herstelproces is afgelopen.

In de eerste fase kan een gebruiker toegang krijgen tot de lege database en zelfs tabellen maken of gegevens in deze database laden. Deze tijdelijke database wordt verwijderd wanneer de herstelservice de tweede fase start.

Tijdelijke oplossing: u hebt geen toegang tot de database die u wilt herstellen totdat u ziet dat het herstellen is voltooid.

TEMPDB-structuur en -inhoud worden opnieuw gemaakt

De tempdb database wordt altijd gesplitst in 12 gegevensbestanden en de bestandsstructuur kan niet worden gewijzigd. De maximale grootte per bestand kan niet worden gewijzigd en er kunnen geen nieuwe bestanden worden toegevoegd aan tempdb . Tempdb wordt altijd opnieuw gemaakt als een lege database wanneer het exemplaar wordt gestart of als er een wisseling van de fout wordt ondergaat, en eventuele wijzigingen in tempdb blijven niet behouden.

Overschrijding van opslagruimte met kleine databasebestanden

CREATE DATABASE- ALTER DATABASE ADD FILE en RESTORE DATABASE -instructies kunnen mislukken omdat het exemplaar de limiet voor Azure Storage bereiken.

Voor Algemeen instantie van SQL Managed Instance is maximaal 35 TB aan opslag gereserveerd voor Azure Premium Schijfruimte. Elk databasebestand wordt op een afzonderlijke fysieke schijf geplaatst. Schijfgrootten kunnen 128 GB, 256 GB, 512 GB, 1 TB of 4 TB zijn. Ongebruikte ruimte op de schijf wordt niet in rekening gebracht, maar de totale som van Azure Premium Schijfgrootten mag niet groter zijn dan 35 TB. In sommige gevallen kan een beheerd exemplaar dat in totaal geen 8 TB nodig heeft, de Azure-limiet van 35 TB voor de opslaggrootte overschrijden vanwege interne fragmentatie.

Zo kan een Algemeen van SQL Managed Instance één groot bestand van 1,2 TB hebben dat op een schijf van 4 TB is geplaatst. Het kan ook 248 bestanden bevatten die elk 1 GB zijn en die op afzonderlijke schijven van 128 GB zijn geplaatst. In dit voorbeeld:

  • De totale toegewezen schijfopslaggrootte is 1 x 4 TB + 248 x 128 GB = 35 TB.
  • De totale gereserveerde ruimte voor databases op de instantie is 1 x 1,2 TB + 248 x 1 GB = 1,4 TB.

In dit voorbeeld ziet u dat een exemplaar van het beheerde exemplaar van SQL onder bepaalde omstandigheden de limiet van 35 TB kan bereiken die is gereserveerd voor een gekoppelde Azure Premium-schijf wanneer u dit mogelijk niet verwacht.

In dit voorbeeld blijven bestaande databases werken en kunnen ze probleemloos groeien zolang er geen nieuwe bestanden worden toegevoegd. Nieuwe databases kunnen niet worden gemaakt of hersteld omdat er onvoldoende ruimte is voor nieuwe schijfstations, zelfs niet als de totale grootte van alle databases de instantiegroottelimiet niet bereikt. De fout die in dat geval wordt geretourneerd, is niet duidelijk.

U kunt het aantal resterende bestanden identificeren met behulp van systeemweergaven. Als u deze limiet bereikt, probeert u enkele van de kleinere bestanden leeg te maken en te verwijderen met behulp van de instructie DBCC SHRINKFILE of schakelt u over naar de Bedrijfskritiek-laag,die deze limiet niet heeft.

GUID-waarden die worden weergegeven in plaats van databasenamen

Verschillende systeemweergaven, prestatiemeters, foutberichten, XEvents en vermeldingen in foutenlogboek geven GUID-database-id's weer in plaats van de werkelijke databasenamen. Vertrouw niet op deze GUID-id's omdat ze in de toekomst worden vervangen door daadwerkelijke databasenamen.

Tijdelijke oplossing: gebruik de weergave om de werkelijke databasenaam op te lossen vanuit de naam van de fysieke database, opgegeven in de sys.databases vorm van GUID-database-id's:

SELECT name as ActualDatabaseName, physical_database_name as GUIDDatabaseIdentifier 
FROM sys.databases
WHERE database_id > 4;

Foutlogboeken worden niet persistent gemaakt

Foutlogboeken die beschikbaar zijn in SQL Managed Instance worden niet persistent gemaakt en hun grootte is niet opgenomen in de maximale opslaglimiet. Foutlogboeken worden mogelijk automatisch gewist als er een failover plaatsvindt. Mogelijk zijn er hiaten in de geschiedenis van het foutenlogboek omdat SQL managed instance meerdere keren is verplaatst op verschillende virtuele machines.

Transactiebereik voor twee databases binnen hetzelfde exemplaar wordt niet ondersteund

(Opgelost in maart 2020) De klasse in .NET werkt niet als er twee query's worden verzonden naar twee databases binnen hetzelfde exemplaar TransactionScope onder hetzelfde transactiebereik:

using (var scope = new TransactionScope())
{
    using (var conn1 = new SqlConnection("Server=quickstartbmi.neu15011648751ff.database.windows.net;Database=b;User ID=myuser;Password=mypassword;Encrypt=true"))
    {
        conn1.Open();
        SqlCommand cmd1 = conn1.CreateCommand();
        cmd1.CommandText = string.Format("insert into T1 values(1)");
        cmd1.ExecuteNonQuery();
    }

    using (var conn2 = new SqlConnection("Server=quickstartbmi.neu15011648751ff.database.windows.net;Database=b;User ID=myuser;Password=mypassword;Encrypt=true"))
    {
        conn2.Open();
        var cmd2 = conn2.CreateCommand();
        cmd2.CommandText = string.Format("insert into b.dbo.T2 values(2)");        cmd2.ExecuteNonQuery();
    }

    scope.Complete();
}

Tijdelijke oplossing (niet meer nodig sinds maart 2020): gebruik SqlConnection.ChangeDatabase(String) om een andere database te gebruiken in een verbindingscontext in plaats van twee verbindingen te gebruiken.

CLR-modules en gekoppelde servers kunnen soms niet verwijzen naar een lokaal IP-adres

CLR-modules in SQL Managed Instance en gekoppelde servers of gedistribueerde query's die verwijzen naar een huidige instantie, kunnen soms het IP-adres van een lokaal exemplaar niet oplossen. Deze fout is een tijdelijk probleem.

Tijdelijke oplossing: gebruik indien mogelijk contextverbindingen in een CLR-module.

Updates

Zie voor een lijst met SQL Database-updates en -verbeteringen SQL Database service-updates.

Zie Service-updates voor updates en verbeteringen in alle Azure-services.

Bijdragen aan inhoud

Als u een bijdrage wilt leveren aan SQL Azure-documentatie, gaat u naar gids voor Docs-inzenders.