Avamar: SQL-palautus epäonnistuu ja sanoo "Tietokanta on jo auki, ja sillä voi olla vain yksi käyttäjä kerrallaan"
Summary: Tietämyskannan (KB) artikkeli, joka tarjoaa ratkaisun SQL-tietokannan palautusvirheeseen, kun käyttäjät käyttävät tietokantaa.
Symptoms
SQL-tietokannan palautus alkuperäiseen sijaintiin epäonnistuu ja näyttöön tulee seuraavankaltakaltaisia virheitä:
avsql Error <40258>: sqlconnectimpl_smo::get_database_data_names Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while executing a Transact-SQL statement or batch. ---> System.Data.SqlClient.SqlException: Database 'Avamar1' is already open and can only have one user at a time.
Cause
Yksi tai useampi käyttäjä tai yhteys käyttää tietokantaa, johon palautetaan. Alkuperäistä tietokantaa ei voi korvata, jos tietokantaa käyttää käyttäjät tai yhteydet.
Resolution
Vaihda tietokannan tila Multi-User -tilasta Single-User -tilaan.
SQL Server Management Studion käyttäminen
Tietokannan asettaminen yhden käyttäjän tilaan:
-
Muodosta objektinhallinnassa yhteys SQL Server Database Enginen esiintymään ja laajenna kyseinen esiintymä.
-
Napsauta muutettavaa tietokantaa hiiren kakkospainikkeella ja valitse sitten Ominaisuudet.
-
Napsauta Tietokannan ominaisuudet -valintaikkunassa Asetukset-sivua.
-
Valitse Rajoita käyttöä -vaihtoehdosta Single.
-
Jos tietokantaan on muodostettu yhteys muita käyttäjiä, näyttöön tulee Open Connections -viesti. Jos haluat muuttaa ominaisuutta ja sulkea kaikki muut yhteydet, klikkaa Kyllä.
Transact-SQL:n käyttäminen
Tietokannan asettaminen yhden käyttäjän tilaan:
-
Muodosta yhteys tietokantamoduuliin.
-
Valitse Vakio-palkista Uusi kysely.
-
Kopioi ja liitä seuraava esimerkki kyselyikkunaan ja napsauta "Suorita" -painiketta. Esimerkissä tietokannaksi määritetään
SINGLE_USERtilassa saadaksesi yksinomaisen pääsyn. Esimerkissä Avamar1-tietokannan tilaksi määritetäänREAD_ONLYja palauttaa tietokannan käyttöoikeuden kaikille käyttäjille. IrtisanomismahdollisuusWITH ROLLBACK IMMEDIATEon määritelty ensimmäisessäALTER DATABASELausunto. Tämä aiheuttaa sen, että kaikki keskeneräiset tapahtumat peruutetaan ja kaikki muut yhteydet Avamar1-tietokantaan katkeavat välittömästi.
SQLCopy
USE master; GO ALTER DATABASE Avamar1 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO ALTER DATABASE Avamar1 SET READ_ONLY; GO ALTER DATABASE Avamar1 SET MULTI_USER; GO
Viite:
https://docs.microsoft.com/en-us/sql/relational-databases/databases/set-a-database-to-single-user-mode?view=sql-server-2017Tämän jälkeen yritä palauttaa SQL-tietokanta uudelleen alkuperäiseen sijaintiin.