Եթե տվյալների բազան միայն ընթերցման համար է, դուք կարող եք հեշտությամբ ճանաչել կարգավիճակը sys.databases- ից կամ SSMS- ից: Հայտնի փաստ է այն, որ դուք չեք կարող թարմացնել տվյալները միայն կարդալու շտեմարանում: Այս հոդվածում մենք կսովորենք, թե ինչպես կարելի է դա լուծել:
Երկու տարբերակ
Մենք կարող ենք կամ օգտագործել SQL Server Կառավարման ստուդիա, այսինքն ՝ SSMS կամ T-SQL սկրիպտ ՝ միայն կարդալու շտեմարանը կարդալու համար գրելու շտեմարանի վերածելու համար: Այս տարբերակները ավելի լավ հասկանալու համար թույլ տվեք մեզ
- Ստեղծեք տվյալների բազա
- Դրա մեջ սեղաններ ստեղծեք
- Աղյուսակում գրառումներ ավելացրեք
- Տվյալների բազան դարձրեք միայն կարդալու համար
- Փորձեք նույն աղյուսակում գրառումներ ավելացնել
- Վերանայեք սխալի հաղորդագրությունը
- Տվյալների բազան վերափոխեք կարդալու և գրելու ռեժիմի
Պատրաստել տվյալների բազան
Ձեր կողմից SQL Server կառավարման ստուդիա, միացեք ձեր SQL server, սեղմեք աջ «Տվյալների բազան» հանգույցի վրա, ապա ընտրեք «Նոր բազա» տարբերակը: Տվյալների շտեմարանի անուն մուտքագրելուց հետո սեղմեք Ok: Կարող եք նաև օգտագործել T-SQL գրությունը, ինչպես ցույց է տրված ստորև բերված օրինակում.
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
SSMS- ից սեղան ստեղծեք ՝ ընտրելով տվյալների բազան, աջ կտտացրեք «Աղյուսակներ» հանգույցին, այնուհետև մատնանշեք «Նորը» և կտտացրեք «Աղյուսակ option» տարբերակը: Մուտքագրեք սյունակի անվանումը և տվյալների տեսակները, ապա պահպանեք աղյուսակի անունով: Աղյուսակ ստեղծելու համար կարող եք օգտագործել ստորև ներկայացված հարցումը.
USE [DataNumen] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Table1]( [Col1] [nchar](10) NULL ) ON [PRIMARY] GO
Հետևյալ հարցման միջոցով գրառումներ ավելացրեք աղյուսակին.
Insert into [dbo].[Table1] values ('Testvalue')
The result window of SSMS will show the following message: (1 row(s) affected)
Օգտագործելով SQL Server Կառավարման ստուդիան, սեղմեք տվյալների բազան աջ կտտոցով և ընտրեք «Հատկություններ» տարբերակը: Տվյալների շտեմարանի հատկությունների էջում, «Ընտրանքներ» բաժնում, «abaseիշտ» -ից «Կեղծ» կետը դրեք «Շտեմարանի միայն կարդալու համար» տարբերակը: Դուք կարող եք նաև փոխել տվյալների բազան միայն կարդալու համար, օգտագործելով TSQL գրությունը, ինչպես ցույց է տրված ստորև:
USE [master] GO ALTER DATABASE [DataNumen] SET READ_ONLY WITH NO_WAIT GO
Դուք կարող եք տեսնել, որ SSMS- ն այժմ տվյալների շտեմարանի անվան մոտ ցույց կտա «Միայն կարդալու» կարգավիճակը:
Այժմ փորձենք նոր գրառում մտցնել աղյուսակի մեջ:
Insert into [dbo].[Table1] values ('Testvalue2')
Արդյունքի պատուհանում կհայտնվի հետևյալ սխալի հաղորդագրությունը.
Msg 3906, Level 16, State 1, Line 12 Failed to update database "DataNumen" because the database is read-only.
Վերափոխեք տվյալների շտեմարանի կարգավիճակը տվյալների բազայի հատկությունների էջի միջոցով կարդալու և գրելու համար և ընտրեք «Միայն տվյալների բազա կարդալու» -ից «Կեղծ» -ից «ueիշտ» տարբերակը կամ կատարել հետևյալ սցենարը.
USE [master] GO ALTER DATABASE [DataNumen] SET READ_WRITE WITH NO_WAIT GO
Այժմ, երբ փորձում եք գրառում ավելացնել, «Չհաջողվեց թարմացնել տվյալների բազան» սխալի հաղորդագրությունըDataNumen«Քանի որ տվյալների բազան ընթերցման համար է» կվերանա: Բոլորս էլ գիտենք, որ տվյալների բազայի կրկնօրինակումն օգնում է մեզ ուղղել SQL Server շտեմարաններ Այնուամենայնիվ, միայն ընթերցանության շտեմարանի կրկնօրինակը կվերականգնի տվյալների բազան միայն կարդալու և ոչ թե կարդալու ռեժիմի ռեժիմում:
Հեղինակի ներածություն.
Նիլ Վարլին տվյալների վերականգման փորձագետ է DataNumen, Inc., որը տվյալների վերականգման տեխնոլոգիաների համաշխարհային առաջատարն է, այդ թվում Outlook- ի վերականգնում և գերազանցել վերականգնման ծրագրային արտադրանքները: Լրացուցիչ տեղեկությունների համար այցելեք www.datanumen.com