#wip: Fixing the SQL Server Scripts.

This commit is contained in:
mbruzon 2026-07-13 14:38:33 +02:00
parent f9981e1f19
commit d4f7dd60c9
11 changed files with 84 additions and 62 deletions

View File

@ -1,5 +1,5 @@
from mcr.microsoft.com/mssql/server:2022-latest
expose 1433/tcp
expose 31433/tcp
user root
env ACCEPT_EULA=Y
# env MSSQL_SA_PASSWORD=Abc123.. # Incompatible with lastest Docker versions.

View File

@ -0,0 +1,4 @@
@echo off
docker images -q anp:sql-server | findstr "anp:sql-server">nul || docker image remove anp:sql-server --force
docker build -f %~dp0/Dockerfile -t anp:sql-server %~dp0 --no-cache

View File

@ -333,6 +333,7 @@ export const Components = (function(){
name : name,
data_i18n : name,
data_i18n_without : true,
autocomplete : "cosa1 cosa2 cosa3",
placeholder : text + "...",
...self.set_attributes([
["id", "identifier"],
@ -376,6 +377,7 @@ export const Components = (function(){
name : name,
data_i18n : name,
data_i18n_without : true,
autocomplete : "off",
placeholder : text + "...",
...self.set_attributes([
["id", "identifier"],
@ -415,6 +417,7 @@ export const Components = (function(){
name : name,
data_i18n : name,
data_i18n_without : true,
autocomplete : "off",
placeholder : text + "...",
pattern : "[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$",
...self.set_attributes([
@ -454,6 +457,7 @@ export const Components = (function(){
name : name,
data_i18n : name,
data_i18n_without : true,
autocomplete : "off",
placeholder : text + "...",
...self.set_attributes([
["id", "identifier"],

View File

@ -12,6 +12,15 @@ pyp3 install websockets selenium selenium-wire pyodbc --break-system-packages
```
```batch
@echo off
@rem setuptools==69.5.1 => Lastest miss some dependences.
@rem blinker==1.7.0 => Lastests has a security error.
pyp install websockets pyodbc requests selenium selenium-wire setuptools==69.5.1 blinker==1.7.0
```
# Settings
## Root Paths

View File

@ -13,28 +13,8 @@ if object_id(N'dbo.users_tables_create', N'P') is not null drop procedure dbo.us
go
create procedure dbo.users_tables_create as begin set nocount on
if object_id(N'dbo.Sessions', N'U') is null create table dbo.Sessions(
id integer not null identity(1, 1),
[procedure] integer not null,
[user] integer not null,
[ip] integer not null,
date_last datetime not null constraint df_sessions_date_last default getdate(),
date_in datetime not null constraint df_sessions_date_in default getdate(),
date_out datetime,
constraint pk_sessions primary key clustered(id),
constraint fk_sessions_procedure foreign key([procedure]) references dbo.Procedures(id)
on update no action
on delete no action,
constraint fk_sessions_user foreign key([user]) references dbo.Users(id)
on update no action
on delete no action,
constraint fk_sessions_ip foreign key([ip]) references dbo.Ips(id)
on update no action
on delete no action
)
if object_id(N'dbo.SessionsActived', N'U') is null create table dbo.SessionsActived(
id integer not null,
id integer not null identity(1, 1),
[procedure] integer not null,
[user] integer not null,
[ip] integer not null,
@ -53,6 +33,26 @@ create procedure dbo.users_tables_create as begin set nocount on
on delete no action
)
if object_id(N'dbo.Sessions', N'U') is null create table dbo.Sessions(
id integer not null,
[procedure] integer not null,
[user] integer not null,
[ip] integer not null,
date_last datetime not null constraint df_sessions_date_last default getdate(),
date_in datetime not null constraint df_sessions_date_in default getdate(),
date_out datetime,
constraint pk_sessions primary key clustered(id),
constraint fk_sessions_procedure foreign key([procedure]) references dbo.Procedures(id)
on update no action
on delete no action,
constraint fk_sessions_user foreign key([user]) references dbo.Users(id)
on update no action
on delete no action,
constraint fk_sessions_ip foreign key([ip]) references dbo.Ips(id)
on update no action
on delete no action
)
if object_id(N'dbo._Sessions', N'U') is null create table dbo._Sessions(
id integer not null identity(1, 1),
history_mode integer not null,
@ -148,7 +148,7 @@ create trigger dbo.sessions_trigger on dbo.Sessions after insert, update, delete
execute dbo.history_mode_get @insert output, @update output, @delete output, @unknown output
-- Update.
insert into dbo._Sessions(history_mode, id, [procedure], [user], [ip], date_last, date_in, date_out)
insert into dbo._Sessions(history_mode, entity, [procedure], [user], [ip], date_last, date_in, date_out)
select @update, inserted.id, inserted.[procedure], inserted.[user], inserted.[ip], inserted.date_last, inserted.date_in, null
from inserted inserted
join deleted deleted on inserted.id = deleted.id
@ -158,25 +158,25 @@ create trigger dbo.sessions_trigger on dbo.Sessions after insert, update, delete
inserted.[ip] != deleted.[ip] or
inserted.date_last != deleted.date_last or
inserted.date_in != deleted.date_in or
isnull(inserted.date_out, '0001-01-01') != isnull(deleted.date_out, '0001-01-01')
isnull(inserted.date_out, '1753-01-01') != isnull(deleted.date_out, '1753-01-01')
) and not (
inserted.[procedure] = deleted.[procedure] and
inserted.[user] = deleted.[user] and
inserted.[ip] = deleted.[ip] and
inserted.date_last != deleted.date_last and
inserted.date_in = deleted.date_in and
isnull(inserted.date_out, '0001-01-01') = isnull(deleted.date_out, '0001-01-01')
isnull(inserted.date_out, '1753-01-01') = isnull(deleted.date_out, '1753-01-01')
)
-- Insert.
insert into dbo._Sessions(history_mode, id, [procedure], [user], [ip], date_last, date_in, date_out)
insert into dbo._Sessions(history_mode, entity, [procedure], [user], [ip], date_last, date_in, date_out)
select @insert, inserted.id, inserted.[procedure], inserted.[user], inserted.[ip], inserted.date_last, inserted.date_in, null
from inserted inserted
left join deleted deleted on inserted.id = deleted.id
where deleted.id is null
-- Delete.
insert into dbo._Sessions(history_mode, id, [procedure], [user], [ip], date_last, date_in, date_out)
insert into dbo._Sessions(history_mode, entity, [procedure], [user], [ip], date_last, date_in, date_out)
select @delete, deleted.id, deleted.[procedure], deleted.[user], deleted.[ip], deleted.date_last, deleted.date_in, getdate()
from deleted deleted
left join inserted inserted on deleted.id = inserted.id

View File

@ -25,7 +25,7 @@ create procedure dbo.groups_tables_create as begin set nocount on
[session] integer not null,
[name] varchar(64) not null,
[owner] bit not null constraint df_groups_owner default 0,
[description] varchar(512) not null,
[description] varchar(512),
date_in datetime not null constraint df_groups_date_in default getdate(),
date_out datetime,
constraint pk_groups primary key clustered(id),
@ -36,7 +36,7 @@ create procedure dbo.groups_tables_create as begin set nocount on
on update no action
on delete no action,
constraint uq_groups_name unique([name]) with(fillfactor = 90),
constraint ck_groups_name check([name] != '' and [name] not like '%[^a-zA-Z0-9_]%' and [name] not like '[^a-zA-Z_]%')
constraint ck_groups_name check([name] != '' and [name] not like '%[^a-zA-Z0-9_:.]%')
)
if object_id(N'dbo.GroupsUsers', N'U') is null create table dbo.GroupsUsers(
@ -97,7 +97,7 @@ create procedure dbo.groups_tables_create as begin set nocount on
[session] integer not null,
[name] varchar(64) not null,
[owner] bit not null constraint df__groups_owner default 0,
[description] varchar(512) not null,
[description] varchar(512),
date_in datetime not null,
date_out datetime,
history_date datetime2 not null constraint df__groups_history_date default sysutcdatetime(),

View File

@ -23,43 +23,47 @@ create procedure dbo.common_tables_fill as begin set nocount on
if @machine is null begin
declare @group integer
declare @user_to_do bit = 0
declare @ip_to_do bit = 0
set @machine = 1
if @machine_user_id is null begin
insert into dbo.Users([procedure], [session], nick, [password], accessible) values
(@procedure, @machine, @machine_user, hashbytes('SHA2_512', ''), 0)
set @machine_user_id = scope_identity()
set @user_to_do = 1
end
if @machine_ip_id is null begin
insert into dbo.Ips([procedure], [session], [address]) values
(@procedure, @machine, @machine_ip)
set @machine_ip_id = scope_identity()
set @ip_to_do = 1
end
set @machine = (select top 1 id from dbo.SessionsActived where [user] = @machine_user_id and [ip] = @machine_ip_id)
if @machine is null begin
insert into dbo.SessionsActived([procedure], [user], [ip]) values
(@procedure, @machine_user_id, @machine_ip_id)
set @machine = scope_identity()
end
if @user_to_do = 1 begin
insert into dbo.Groups([procedure], [session], [name], owner) values
(@procedure, @machine, @machine_user, 1)
set @group = scope_identity()
insert into dbo.GroupsUsers([procedure], [session], [group], [user]) values
(@procedure, @machine, @group, @machine_user_id)
end
if @machine_ip_id is null begin
insert into dbo.Ips([procedure], [session], [address]) values
(@procedure, @machine, @machine_ip)
set @machine_ip_id = scope_identity()
if @ip_to_do = 1 begin
insert into dbo.Groups([procedure], [session], [name], owner) values
(@procedure, @machine, @machine_user, 1)
(@procedure, @machine, @machine_ip, 1)
set @group = scope_identity()
insert into dbo.GroupsIps([procedure], [session], [group], [ip]) values
(@procedure, @machine, @group, @machine_ip_id)
end
set @machine = (select top 1 id from dbo.Sessions where [user] = @machine_user_id and [ip] = @machine_ip_id and date_out is null)
if @machine is null begin
insert into dbo.Sessions([procedure], [user], [ip]) values
(@procedure, @machine_user_id, @machine_ip_id)
set @machine = scope_identity()
end
if (select top 1 0 from dbo.Users where id = @machine_user_id and [session] = @machine) is null begin

View File

@ -1,11 +1,11 @@
@echo off
set "directory=%cd%"
set "directory=%~dp0"
cd %~dp0\..
cd %directory%\..
call Tools\dockers.stop.bat
docker images -q anp:sql-server | findstr "anp-sql-server">null || call Dockers\SQLServer\rebuild.bat
docker images -q anp:sql-server | findstr "anp-sql-server">nul || call Dockers\SQLServer\rebuild.bat
docker compose up -d
cd %directory%

View File

@ -1,12 +1,12 @@
@echo off
set "current_path=%cd%"
set "current_path=%~dp0"
set "sql_server_host=127.0.0.1"
set "sql_server_port=1433"
set "sql_server_user=sa"
set "sql_server_password="
cd %~dp0\..
cd %current_path%\..
if exist Tools\sqlserver.secrets.cmd (
call Tools\sqlserver.secrets.cmd
@ -14,11 +14,9 @@ if exist Tools\sqlserver.secrets.cmd (
docker compose ps | findstr "anp-sql-server" >nul || call Tools\dockers.execute.bat
for /D %%d in (SQLServer\AnP.*) do (
for %%f in (%%d\*.sql) do (
echo %%f
docker exec -i anp-sql-server /opt/mssql-tools18/bin/sqlcmd -S %sql_server_host%,%sql_server_port% -U %sql_server_user% -P %sql_server_password% -i < %%f
)
for %%f in (SQLServer\AnP.*.sql) do (
echo %%f
docker exec -i anp-sql-server /opt/mssql-tools18/bin/sqlcmd -S %sql_server_host%,%sql_server_port% -U %sql_server_user% -P %sql_server_password% -C < %%f
)
cd %current_path%

View File

@ -4,9 +4,9 @@ services:
image: anp:sql-server
container_name: anp-sql-server
volumes:
- ./Dockers/SQLServer/data:/var/opt/mssql
- ./Dockers/SQLServer/temporary:/temporary
- ./Dockers/SQLServer/scripts:/scripts
- anp_sql_server_data:/data:/var/opt/mssql
- anp_sql_server_data:/temporary:/temporary
- anp_sql_server_data:/scripts:/scripts
environment:
- MSSQL_SA_PASSWORD=Abc123..
ports:
@ -21,3 +21,6 @@ networks:
ipam:
config:
- subnet: 172.20.212.0/24
volumes:
anp_sql_server_data:

0
null Normal file
View File