2 Alternativní řešení pro aktualizaci databáze jen pro čtení v SQL Server

Sdílej nyní:

Pokud je databáze pouze pro čtení, můžete její stav snadno identifikovat ze sys.databases nebo ze SSMS. Známým faktem je, že nelze aktualizovat data v databázi pouze pro čtení. V tomto článku se naučíme, jak tento problém vyřešit a opravit.

Dvě možnosti

Aktualizujte databázi pouze pro čtení SQL ServerMůžeme použít buď SQL Server Management Studio, tj. skript SSMS nebo T-SQL pro převod databáze pouze pro čtení na databázi pro čtení a zápis. Abychom těmto možnostem lépe porozuměli, pojďme

  1. Vytvořte databázi
  2. Vytvořte v něm tabulky
  3. Přidejte záznamy do tabulky
  4. Vytvořte databázi jako pouze pro čtení
  5. Zkuste přidat záznamy do stejné tabulky
  6. Zkontrolujte chybovou zprávu
  7. Převeďte databázi zpět do režimu čtení a zápisu

Připravte databázi

Z vašeho SQL Server manažerské studio, připojte se k vašemu SQL server, klikněte pravým tlačítkem myši na uzel „Databáze“ a poté vyberte možnost „Nová databáze“. Po zadání názvu databáze stiskněte OK. Můžete také použít skript T-SQL, jak je znázorněno v příkladu níže:

CREATE DATABASE [DataNumen]
 CONTAINMENT = NONE
 ON PRIMARY 
( NAME = N'DataNumen', FILENAME = N'E:\Program Files\MSSQL12.MSSQLSERVER\MSSQL\DATA\DataNumen.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'DataNumen_log', FILENAME = N'E:\Program Files\MSSQL12.MSSQLSERVER\MSSQL\DATA\DataNumen_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO

Vytvořte tabulku z SSMS výběrem databáze, klikněte pravým tlačítkem na uzel „Tabulky“ a poté ukažte na „Nový“ a klikněte na možnost „Tabulka…“. Zadejte název sloupce a datové typy a poté uložte s názvem tabulky. K vytvoření tabulky můžete použít následující dotaz:

USE [DataNumen]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Table1](
 [Col1] [nchar](10) NULL
) ON [PRIMARY]
GO

Přidejte záznamy do tabulky pomocí následujícího dotazu:

Insert into [dbo].[Table1] values ('Testvalue')
The result window of SSMS will show the following message:
 
(1 row(s) affected)

Použití SQL Server Management Studio, klikněte pravým tlačítkem na databázi a vyberte možnost „Vlastnosti“. Na stránce Vlastnosti databáze v části „Options“ nastavte možnost „Database Read-Only“ z „True“ na „False“. Databázi můžete také přepnout do režimu pouze pro čtení pomocí skriptu TSQL, jak je uvedeno níže:

USE [master]
GO
ALTER DATABASE [DataNumen] SET READ_ONLY WITH NO_WAIT
GO

Mohli jste vidět, že SSMS nyní bude u názvu databáze zobrazovat stav „Pouze pro čtení“.

Zobrazit stav Pouze pro čtení

Nyní zkusme do tabulky vložit nový záznam.

Insert into [dbo].[Table1] values ('Testvalue2')

V okně výsledků se zobrazí následující chybová zpráva.

Msg 3906, Level 16, State 1, Line 12
Failed to update database "DataNumen" because the database is read-only.

Vraťte stav databáze na čtení a zápis pomocí stránky Vlastnosti databáze a nastavte volbu z „Databáze jen pro čtení“ z „False“ na „True“ nebo spusťte následující skript:

USE [master]
GO
ALTER DATABASE [DataNumen] SET READ_WRITE WITH NO_WAIT
GO

Nyní, když se pokusíte přidat záznam, zobrazí se chybová zpráva „Nepodařilo se aktualizovat databázi“DataNumen„protože databáze je pouze pro čtení“ zmizí. Všichni víme, že nám k tomu pomáhají zálohy databází opravit SQL Server databází. Záloha databáze pouze pro čtení však obnoví databázi v režimu pouze pro čtení a nikoli v režimu pro čtení a zápis.

Úvod autora:

Neil Varley je odborníkem na obnovu dat DataNumen, Inc., která je světovým lídrem v oblasti technologií pro obnovu dat, včetně Obnova aplikace Outlook a excelové softwarové produkty pro obnovu. Pro více informací navštivte www.datanumen.com

Sdílej nyní:

Komentáře jsou uzavřeny.