DTECH SST - Tài liệu kỹ thuật
  • CÀI ĐẶT DTECH
    • PHIÊN BẢN ĐÓNG GÓI
    • PHIÊN BẢN CUSTOMIZE
      • UPDATE LẬP TRÌNH SANG KHÁCH HÀNG
    • CHUYỂN MÁY CHỦ ĐÓNG GÓI
    • LỖI KẾT NỐI MÁY CHỦ
    • LỖI ATTACH DATA KHÔNG NHẬN
    • QUẢN LÝ TRẠM
    • BẢN SERVICE
      • KHÔNG NHẬN ĐỦ DATA KHI ĐĂNG NHẬP
      • KHÔNG TẠO ĐƯỢC DATA MỚI
      • KIỂM TRA KHÓA BẢN DỊCH VỤ
    • LỖI ĐĂNG NHẬP TRÊN MÁY CHỦ
    • LỖI ĐĂNG NHẬP MÁY TRẠM
    • CÀI ĐẶT SQL LỖI
    • XỬ LÝ LIÊN QUAN KEY HỆ THỐNG
    • Lỗi đọc thông tin phần cứng (Alias not found)
    • A severe error occurred on the current command
    • GỬI HƯỚNG DẪN CÀI ĐẶT XONG
    • PHIÊN BẢN CŨ
  • HÓA ĐƠN ĐIỆN TỬ
    • CHỮ KÝ SỐ - CKS
    • CẤU HÌNH KẾT NỐI
    • CÔNG CỤ LIÊN QUAN
    • TỔNG HỢP LỖI CHUNG
      • Update trạng thái huỷ cho chứng từ
      • update trạng thái hoá đơn effect
      • Xoá menu chuột phải bị lặp lại
    • TỔNG HỢP LỖI M-INVOICE
    • TỔNG HỢP LỖI VNPT
    • TỔNG HỢP LỖI VIETTEL
    • TỔNG HỢP LỖI BKAV
    • TỔNG HỢP LỖI VIN
    • TỎNG HỢP LỖI EASYINVOICE
    • LƯU Ý HOÁ ĐƠN ĐIỆN TỬ
  • LỖI THƯỜNG GẶP
    • LƯU BÁO LỖI
    • GIAO DIỆN VỠ FONT
  • CONVERT DỮ LIỆU
    • EFFECT 2.0
    • EFFECT 3.0 - 4.0 - 6.0
    • MISA VERSION DESKTOP
    • 3T SOFT
  • EXCEL
  • DANH MỤC
    • TẠO CỘT MÃ TĂNG TỰ ĐỘNG
    • XOÁ BỎ CÁC DÒNG TRÙNG
    • UPDATE BANKACCOUNT THEO TÀI KHOẢN KẾ TOÁN
    • MỞ RỘNG KÝ TỰ CHO CỘT MÃ
    • XỬ LÝ SỐ LƯỢNG QUY ĐỔI
    • UPDATE CHITIETTHEO
  • DỮ LIỆU KẾ TOÁN
    • CẬP NHẬT DIỄN GIẢI BÁN HÀNG
  • LƯƠNG
    • CÁC LỖI THƯỜNG GẶP
  • NGHIỆP VỤ
    • TEMP NOTE PHÂN TÍCH
  • PHIẾU IN NHẬP LIỆU
    • IN MẪU DẠNG GROUP
    • Merger các ô của cột trên các dòng giống nhau
    • CÂU LỆNH FORMAT PHIẾU IN
    • Lặp lại tiêu đề in + logo... ở trang 2
    • Lặp lại tiêu đề in
  • KẾT NỐI HTKK
    • MAPING TỪ 1 BÁO CÁO
    • MAPING TỪ NHIỀU BÁO CÁO
  • BÁO CÁO
    • CÔNG THỨC
    • BÁO CÁO DYNAMIC ĐỘNG
      • dynamic cột là tháng
    • LẤY ĐIỀU KIỆN LỌC BÁO CÁO
    • TEMP NOTE PHÂN TÍCH
    • ENTER CHI TIẾT
    • Trước tất cả - chặn khi thiếu điều kiện lọc
  • EFFECT
    • TRUYỀN ĐẨY DỮ LIỆU *
    • GHÉP TỆP U*.DBF
    • KIỂM TRA TRẠM
    • FONT
    • BÁO CÁO
  • SQL SERVER
    • Một số lỗi truy vấn SQL
    • Tài khoản sa của SQL SERVER
    • SQL Server blocked access (OpenRowset/OpenDatasource)
    • Chế độ xp_cmd shell trong SQL Server
    • Tạo Backup tự động SQL Express
    • SQL Script Kiểm tra
    • SQL Scritp Fix Database
    • Attach and Detach Database
    • SQL LOCAL DB
    • HÀM TÁCH SỐ VÀ CHỮ KHỎI CHUỖI
    • KHÔNG TÌM THẤY SQL CONFIG
    • identity_insert table
    • BACKUP - RESTORE SQL
    • Insert tables
    • Sửa lỗi cài đặt SQL
    • Shrink Database
    • Kiểm tra port SQL sử dụng
    • CONVERT DATATYPE SQL
    • Xóa bản ghi trùng trên bảng
    • Replication SQL SERVER
  • THUẾ
    • HÓA ĐƠN MUA VÀO LÀ HÓA ĐƠN BÁN HÀNG CÓ CẦN KÊ KHAI TRÊN TỜ KHAI THUẾ GTGT KHÔNG?
    • Kết chuyển thuế GTGT cuối kỳ
  • LỆNH CẦN BIẾT
  • CÔNG CỤ KHÁC
    • RADMIN VPN
      • CÀI ĐẶT RADMIN
      • KIỂM TRA RADMIN
      • Sửa lỗi Bạn bị cấm ( You are banned )
      • Tắt Auto Metric Radmin VPN
      • Mô hình hoạt động của Radmin VPN
    • Tailscale VPN
  • Cài đặt Google Drive để backup dữ liệu
  • GIÁ THÀNH
    • NÔNG NGHIỆP - TRỒNG TRỌT
      • CÂY TRỒNG 1 LẦN, THU HOẠCH NHIỀU LẦN
      • CÂY TRỒNG LÂU NĂM
      • CÂY TRỒNG NGẮN NGÀY
  • 📶MẠNG LAN - INTERNET
  • KIẾN THỨC PHẦN CỨNG MÁY TÍNH
  • KIỂM TRA MÁY TÍNH
  • WINDOWS SERVER
    • WMI Repository
  • Chữ ký số
    • XOÁ DANH SÁCH CKS CŨ
  • Hướng dẫn tạo SSL/TLS miễn phí với OpenSSL và Let’s Encrypt
Powered by GitBook
On this page
  • KIỂM TRA TRẠNG THÁI DATABASES
  • 1. Database Restoring
  • 2. Database Recovery Pending
  • 3. Database Suppect
  • 4. Database cannot be opened due to inaccessible files or insufficient memory or disk space
  • 5. Database is read only
  1. SQL SERVER

SQL Scritp Fix Database

Một số câu lệnh sử dụng t-sql để sửa lỗi database MS SQL SERVER

KIỂM TRA TRẠNG THÁI DATABASES

DECLARE @status INT 
SELECT @status = status FROM sys.sysdatabases WHERE name = DB_NAME() 
PRINT DB_NAME() + ' - ' + CONVERT(VARCHAR(20),@status) 
IF ( (1 & @status) = 1 ) PRINT 'autoclose' 
IF ( (2 & @status) = 2 ) PRINT '2 not sure' 
IF ( (4 & @status) = 4 ) PRINT 'select into/bulkcopy' 
IF ( (8 & @status) = 8 ) PRINT 'trunc. log on chkpt' 
IF ( (16 & @status) = 16 ) PRINT 'torn page detection' 
IF ( (32 & @status) = 32 ) PRINT 'loading' 
IF ( (64 & @status) = 64 ) PRINT 'pre recovery' 
IF ( (128 & @status) = 128 ) PRINT 'recovering' 
IF ( (256 & @status) = 256 ) PRINT 'not recovered' 
IF ( (512 & @status) = 512 ) PRINT 'offline' 
IF ( (1024 & @status) = 1024 ) PRINT 'read only' 
IF ( (2048 & @status) = 2048 ) PRINT 'dbo use only' 
IF ( (4096 & @status) = 4096 ) PRINT 'single user' 
IF ( (8192 & @status) = 8192 ) PRINT '8192 not sure' 
IF ( (16384 & @status) = 16384 ) PRINT '16384 not sure' 
IF ( (32768 & @status) = 32768 ) PRINT 'emergency mode' 
IF ( (65536 & @status) = 65536 ) PRINT 'online' 
IF ( (131072 & @status) = 131072 ) PRINT '131072 not sure' 
IF ( (262144 & @status) = 262144 ) PRINT '262144 not sure' 
IF ( (524288 & @status) = 524288 ) PRINT '524288 not sure' 
IF ( (1048576 & @status) = 1048576 ) PRINT '1048576 not sure' 
IF ( (2097152 & @status) = 2097152 ) PRINT '2097152 not sure' 
IF ( (4194304 & @status) = 4194304 ) PRINT 'autoshrink' 
IF ( (1073741824 & @status) = 1073741824 ) PRINT 'cleanly shutdown' 

1. Database Restoring

Mô tả: Khôi phục file backup vào Database bị bị lỗi như Restoring...

Sửa lỗi 1: Chạy câu lệnh sau thay tham số @dbname = tên của database đang bị lỗi

Use master
go
RESTORE DATABASE @dbname WITH RECOVERY

Sửa lỗi 2: Cách thủ công cần backup 2 file .MDF và .LDF trước rồi thực hiện

- Stop SQL Server.

– Vô thư mục chứa DB, move 2 file MDF và LDF ra chỗ khác.

– Start lại SQL Server.

– New Database với tên và cấu hình y chang cái database vừa move ra.

– Stop SQL Server.

– Move lại 2 file MDF, LDF vừa move ra ngoài lúc nãy. Nhớ cho phép chép đè.

– Start lại SQL Server, mọi thứ chạy bình thường như chưa hề có cuộc chia ly 
-- Detach, re-attach database
ALTER DATABASE MyDatabase SET EMERGENCY;
EXEC sp_detach_db MyDatabase
EXEC sp_attach_single_file_db @DBName = MyDatabase, @physname = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\MyDatabase.mdf'

2. Database Recovery Pending

Mô tả: Dịch vụ SQL Server bị dừng đột ngột do mất điện hoặc lỗi hệ thống dẫn tới khi khôi phục lại các database bị treo ở trạng thái này.

Sửa lỗi: Thay đổi @DBname theo tên 01 database cần sửa lỗi

ALTER DATABASE [@DBName] SET EMERGENCY;  -- Chuyển trạng thái db sang cấp cứu
GO

ALTER DATABASE [@DBName] set single_user  -- Chuyển trạng thái db sang chỉ 1 user dùng
GO

DBCC CHECKDB ([@DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS; -- Kiểm tra và sửa lỗi database cho phép mất các bản ghi gây ra lỗi
GO 

ALTER DATABASE [@DBName] set multi_user  -- Chuyển trạng thái db sang nhều người sử dụng như ban đầu
GO

Sửa lỗi cho trường hợp chạy nhiều database cùng lúc

Declare @sql nvarchar(max)
DECLARE @db_name VARCHAR(200);
DECLARE @i INT = 1;

DECLARE @db_names TABLE (
   id INT IDENTITY(1,1) PRIMARY KEY, 
   db_name VARCHAR(50) NOT NULL );

INSERT INTO @db_names
   SELECT name
   FROM master.sys.databases 
   WHERE name NOT IN ('master','model','msdb','tempdb','ReportServer','ReportServerTempDB')  /* Databases which needs to be excluded */
      AND state <> 0 /* Include only the database which are online */
      AND is_in_standby = 0 /* database is not read only for log shipping */
	  And RTRIM(LTRIM(state_desc)) like '%EMERGENCY%';
WHILE EXISTS (SELECT 1 from @db_names WHERE Id = @i)
BEGIN
    
   SELECT @db_name = db_name from @db_names WHERE Id = @i;
   PRINT '--Database Rebuild Started: ' + @db_name
		----1. Set EMERGENCY
		--set @sql ='ALTER DATABASE '+@db_name +' SET EMERGENCY;'
		--print @sql
		--exec(@sql)
		----2. Set Single
		set @sql ='ALTER DATABASE '+@db_name +' SET SINGLE_USER;'
		print @sql
		exec(@sql)
		--3. REBUILD DATABASE
		set @sql ='DBCC CHECKDB('+@db_name+',REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;'
		print @sql
		exec(@sql)
		--4. Set MULTI_USER
		set @sql ='ALTER DATABASE '+@db_name +' SET MULTI_USER;'
		print @sql
		exec(@sql)
   SET @i = @i + 1;
END
GO

3. Database Suppect

Mô tả: Do SQL Server bị tắt đột ngột, mất điện cho máy chủ, ổ cứng chứa database không đủ dung lượng trống...

Sửa lỗi: thay Dbname bằng tên 01 database cần sửa lỗi

EXEC sp_resetstatus Dbname;  -- Lệnh reset trạng thái database
ALTER DATABASE Dbname SET EMERGENCY   -- Chuyển trạng thái database sang cấp cứu
DBCC checkdb(Dbname) -- Kiểm tra tình trạng database cố gắng sửa lỗi trước
ALTER DATABASE Dbname SET SINGLE_USER WITH ROLLBACK IMMEDIATE  -- Chuyển sang chế độ 1 người dùng
--Chạy theo thứ tự sửa lỗi trước, khuyến nghị dùng lệnh 1,2 xong kiểm tra database ok chưa, nếu không được thì dùng lệnh 3
--Lệnh số 3 chạy có thể mất dữ liệu do chấp nhận xoá bản ghi lỗi
--1. Kiểm tra vật lý database và cố gắng sửa lỗi
DBCC CHECKDB WITH PHYSICAL_ONLY
--2. Kiểm tra database, sửa chữa đảm bảo không mất dữ liệu bản ghi
DBCC CHECKDB ('Dbname', REPAIR_REBUILD)
--3. Kiểm tra database, sửa chữa, cho phép mất dữ liệu vì xoá những bản ghi lỗi
DBCC CheckDB ('Dbname', REPAIR_ALLOW_DATA_LOSS)
-- Sửa xong cho phép nhiều người sử dụng.
ALTER DATABASE Dbname SET MULTI_USER

4. Database cannot be opened due to inaccessible files or insufficient memory or disk space

Mô tả: Lỗi này do database của SQL sau khi sửa lỗi nào trước đó đang bị trạng thái tắt ( Offline) cần phải bật lên để có thể sử dụng được.

Sửa lỗi: Chạy câu lệnh này:

ALTER DATABASE [YourDatabaseName] SET ONLINE;

5. Database is read only

Mô tả: Lỗi này thường xảy ra khi database đang sử dụng nhưng quyền thư mục trên file database bị thay đổi không có Full Control dẫn tới lỗi

Sửa lỗi: Chạy câu lệnh này

USE [master]
GO
ALTER DATABASE [YourDatabaseName] SET READ_WRITE WITH NO_WAIT
GO
PreviousSQL Script Kiểm traNextAttach and Detach Database

Last updated 2 months ago

*Tham khảo danh sách các lỗi được hướng dẫn

tại đây