QUẢN LÝ TRẠM
Một số phiên bản cũ chưa có bảng kiểm tra trạm đăng nhập
KIỂM TRA TRẠM, USER ĐANG NHẬP
Nhìn vào thời gian nào đăng nhập xa nhất, thì có thể là trạm đó không sử dụng. Báo lại khách hàng kiểm tra user đó còn hoạt động hay không để xử lý tiếp
-- Liệt kê các trạm đăng nhập
select T1.*, T2.ten
from
(
select max(computername) as tenmaytinh,max(noidung) as noidung,
max(createdate) as thoigian,
max([user]) as nguoidung,
tram
From chamcong
--WHERE NOIDUNG LIKE N'%thuỷ%' -- where thêm ở nội dung sẽ chuẩn hơn
Group by tram
)T1
inner join
(select [user] as nguoidung,* from [users])T2
on T1.nguoidung = T2.nguoidung
Order by thoigian desc
RESET ID TRẠM BẢN DEV Cũ
--ÁP DỤNG CHO BẢN DEV CŨ KHÔNG CÓ RESET NHIỀU DATABASE
-- CHÚ Ý CHỈ ÁP DỤNG CHO MÁY CHỈ CÓ RIÊNG BẢN KẾ TOÁN DEV CŨ,
--Nếu có cả DEV mới và 88 thì không dùng được
--1. Kiểm tra danh sách các database
SELECT name,database_id FROM sys.databases
WHERE database_id>6 -- Lấy ra Vị trí của database bắt đầu dùng DTECH, lại đi các db của hệ thống (master, model,msdb,tempdb,report...)
--2. Dựa theo vị trí để điền lại vào @id_data
DECLARE @vitri int -- Vị trí những mã trống theo thứ tự tăng dần
DECLARE @tendb NVARCHAR(300)
DECLARE @id_tram INT
DECLARE @id_data INT
DECLARE @sql_cmm NVARCHAR(MAX)
Declare @err_state int =0; -- Trạng thái lỗi trả về
SET @id_tram =1 -- ID trạm cần reset
SET @id_data = 7 -- Vị trí id của database bắt đầu dùng DTECH
--Tạo 1 bảng tạm quét danh sách các database
declare bangdsdata cursor for
select ROW_NUMBER() OVER(ORDER BY name ASC) AS vitri,name from sys.databases where database_id>=@id_data
open bangdsdata
Fetch next from bangdsdata
into @vitri,@tendb
While @@FETCH_STATUS=0
BEGIN
print '--vitri: '+ CONVERT(NVARCHAR,@vitri)
--print 'Ma: '+@kytu+FORMAT(@maxso+@vitri,'00000')
--PRINT 'Update: '+'Update ['+@tendb+'].dbo.Tram set trangthai=0,modidate=getdate() where tram='+CONVERT(NVARCHAR,@id_tram)
SET @sql_cmm='Update ['+@tendb+'].dbo.Tram set trangthai=0,modidate=getdate() where tram='+CONVERT(NVARCHAR,@id_tram)
BEGIN TRY
PRINT @sql_cmm
EXEC(@sql_cmm)
END TRY
BEGIN CATCH
SELECT @err_state = ERROR_STATE()
END CATCH;
Fetch next from bangdsdata
into @vitri,@tendb
END
CLOSE bangdsdata
DEALLOCATE bangdsdata
CẬP NHẬT ĐƯỜNG DẪN BACKUP TẤT CẢ CÁC DATABASE BẢN DỊCH VỤ
--ÁP DỤNG CHO BẢN DEV CŨ KHÔNG CÓ RESET NHIỀU DATABASE
-- CHÚ Ý CHỈ ÁP DỤNG CHO MÁY CHỈ CÓ RIÊNG BẢN KẾ TOÁN DEV CŨ,
--1. Kiểm tra danh sách các database
SELECT name,database_id FROM sys.databases
WHERE database_id>4 -- Lấy ra Vị trí của database bắt đầu dùng DTECH, lại đi các db của hệ thống (master, model,msdb,tempdb,report...)
--2. Dựa theo vị trí để điền lại vào @id_data
DECLARE @vitri int -- Vị trí những mã trống theo thứ tự tăng dần
DECLARE @tendb NVARCHAR(300)
DECLARE @id_tram INT
DECLARE @id_data INT
DECLARE @sql_cmm NVARCHAR(MAX)
Declare @err_state int =0; -- Trạng thái lỗi trả về
DECLARE @path NVARCHAR(MAX)
DECLARE @value NVARCHAR(MAX)
SET @path=N'E:\DTECH\DtechService\Backup' -- Đường dẫn backup SQL
SET @value =N'SelectedPath'
--SET @id_tram =1 -- ID trạm cần reset
SET @id_data = 5 -- Vị trí id của database bắt đầu dùng DTECH
--Tạo 1 bảng tạm quét danh sách các database
declare bangdsdata cursor for
select ROW_NUMBER() OVER(ORDER BY name ASC) AS vitri,name from sys.databases where database_id>=@id_data
open bangdsdata
Fetch next from bangdsdata
into @vitri,@tendb
While @@FETCH_STATUS=0
BEGIN
print '--vitri: '+ CONVERT(NVARCHAR,@vitri)
--print 'Ma: '+@kytu+FORMAT(@maxso+@vitri,'00000')
--PRINT 'Update: '+'Update ['+@tendb+'].dbo.Tram set trangthai=0,modidate=getdate() where tram='+CONVERT(NVARCHAR,@id_tram)
--SET @sql_cmm='Update ['+@tendb+'].dbo.Tram set trangthai=0,modidate=getdate() where tram='+CONVERT(NVARCHAR,@id_tram)
SET @sql_cmm='Update ['+@tendb+'].dbo.Dregistry set value='''+@path+''' where name='''+@value+''''
BEGIN TRY
PRINT @sql_cmm
EXEC(@sql_cmm)
END TRY
BEGIN CATCH
SELECT @err_state = ERROR_STATE()
END CATCH;
Fetch next from bangdsdata
into @vitri,@tendb
END
CLOSE bangdsdata
DEALLOCATE bangdsdata
Last updated