/* WARNING: This script removes every user table except dbo.b_user. Database views are intentionally preserved. Run it only against a selected organization database after confirming the target connection. The metadata tables are rebuilt from scratch to match 新数据库结构.md. Only the b_user table is preserved; every other user table is dropped. */ SET NOCOUNT ON; SET XACT_ABORT ON; BEGIN TRANSACTION; EXEC sys.sp_set_session_context @key = N'allow_g3soft', @value = 1; DECLARE @AdminId bigint = ( SELECT TOP (1) b_id FROM dbo.b_user WHERE b_account = N'g3soft' AND b_canuse = 1 ); IF @AdminId IS NULL THROW 51000, N'未找到启用的 g3soft 用户,已取消重置。', 1; EXEC sys.sp_set_session_context @key = N'reset_admin_id', @value = @AdminId; DECLARE @Sql nvarchar(max) = N''; SELECT @Sql = @Sql + N'ALTER TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id)) + N'.' + QUOTENAME(OBJECT_NAME(parent_object_id)) + N' DROP CONSTRAINT ' + QUOTENAME(name) + N';' FROM sys.foreign_keys WHERE OBJECT_NAME(parent_object_id) <> N'b_user' OR OBJECT_NAME(referenced_object_id) <> N'b_user'; IF @Sql <> N'' EXEC sys.sp_executesql @Sql; SET @Sql = N''; SELECT @Sql = @Sql + N'DROP TABLE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + N'.' + QUOTENAME(name) + N';' FROM sys.tables WHERE is_ms_shipped = 0 AND name <> N'b_user'; IF @Sql <> N'' EXEC sys.sp_executesql @Sql; GO DECLARE @AdminId bigint = TRY_CONVERT(bigint, SESSION_CONTEXT(N'reset_admin_id')); IF @AdminId IS NULL THROW 51001, N'重置会话缺少管理员 ID。', 1; CREATE TABLE dbo.s_module ( b_id bigint NOT NULL, b_code varchar(50) NOT NULL, b_parent_id bigint NULL, b_name nvarchar(100) NOT NULL, b_i18n varchar(150) NULL, b_module_type varchar(20) NOT NULL, b_route varchar(200) NULL, b_viewtable varchar(128) NULL, b_savetable varchar(128) NULL, b_keyfield varchar(50) NULL, b_orderfield varchar(500) NULL, b_canmenu int NOT NULL CONSTRAINT DF_s_module_canmenu DEFAULT (0), b_canuse int NOT NULL CONSTRAINT DF_s_module_canuse DEFAULT (1), b_xh int NOT NULL CONSTRAINT DF_s_module_xh DEFAULT (0), CONSTRAINT PK_s_module PRIMARY KEY (b_id), CONSTRAINT UQ_s_module_code UNIQUE (b_code) ); CREATE UNIQUE INDEX UX_s_module_route ON dbo.s_module (b_route) WHERE b_route IS NOT NULL; CREATE INDEX IX_s_module_parent ON dbo.s_module (b_parent_id, b_xh, b_id); CREATE TABLE dbo.s_module_field ( b_id bigint NOT NULL, b_module_id bigint NOT NULL, b_field varchar(50) NOT NULL, b_name nvarchar(100) NOT NULL, b_i18n varchar(150) NULL, b_type varchar(30) NOT NULL, b_default_value nvarchar(500) NULL, b_options nvarchar(max) NULL, b_canuse int NOT NULL CONSTRAINT DF_s_module_field_canuse DEFAULT (1), CONSTRAINT PK_s_module_field PRIMARY KEY (b_id), CONSTRAINT UQ_s_module_field UNIQUE (b_module_id, b_field) ); CREATE INDEX IX_s_module_field_module ON dbo.s_module_field (b_module_id, b_canuse, b_id); CREATE TABLE dbo.s_module_auto_code ( b_id bigint NOT NULL, b_module_id bigint NOT NULL, b_field_id bigint NOT NULL, b_prefix nvarchar(100) NOT NULL CONSTRAINT DF_s_module_auto_code_prefix DEFAULT (N''), b_date_format varchar(30) NOT NULL CONSTRAINT DF_s_module_auto_code_date_format DEFAULT ('yyyyMM'), b_separator nvarchar(10) NOT NULL CONSTRAINT DF_s_module_auto_code_separator DEFAULT (N'-'), b_sequence_width int NOT NULL CONSTRAINT DF_s_module_auto_code_sequence_width DEFAULT (5), b_reset_type varchar(10) NOT NULL CONSTRAINT DF_s_module_auto_code_reset_type DEFAULT ('month'), b_start_value bigint NOT NULL CONSTRAINT DF_s_module_auto_code_start_value DEFAULT (1), b_current_period varchar(8) NULL, b_current_value bigint NOT NULL CONSTRAINT DF_s_module_auto_code_current_value DEFAULT (0), b_canuse int NOT NULL CONSTRAINT DF_s_module_auto_code_canuse DEFAULT (1), CONSTRAINT PK_s_module_auto_code PRIMARY KEY (b_id), CONSTRAINT UQ_s_module_auto_code_module UNIQUE (b_module_id) ); CREATE INDEX IX_s_module_auto_code_field ON dbo.s_module_auto_code (b_field_id); CREATE TABLE dbo.s_module_field_group ( b_id bigint NOT NULL, b_module_id bigint NOT NULL, b_parent_id bigint NULL, b_title nvarchar(100) NOT NULL, b_i18n varchar(150) NULL, b_xh int NOT NULL CONSTRAINT DF_s_module_field_group_xh DEFAULT (0), b_canuse int NOT NULL CONSTRAINT DF_s_module_field_group_canuse DEFAULT (1), CONSTRAINT PK_s_module_field_group PRIMARY KEY (b_id) ); CREATE INDEX IX_s_module_field_group_module ON dbo.s_module_field_group (b_module_id, b_canuse, b_xh, b_id); CREATE TABLE dbo.s_module_field_list ( b_id bigint NOT NULL, b_module_id bigint NOT NULL, b_field_id bigint NULL, b_group_id bigint NULL, b_i18n varchar(150) NULL, b_visible int NOT NULL CONSTRAINT DF_s_module_field_list_visible DEFAULT (1), b_xh int NOT NULL CONSTRAINT DF_s_module_field_list_xh DEFAULT (0), b_width int NULL, CONSTRAINT PK_s_module_field_list PRIMARY KEY (b_id) ); CREATE UNIQUE INDEX UX_s_module_field_list_field ON dbo.s_module_field_list (b_module_id, b_field_id) WHERE b_field_id IS NOT NULL; CREATE INDEX IX_s_module_field_list_tree ON dbo.s_module_field_list (b_module_id, b_group_id, b_xh, b_id); CREATE TABLE dbo.s_module_field_edit ( b_id bigint NOT NULL, b_module_id bigint NOT NULL, b_field_id bigint NOT NULL, b_required int NOT NULL CONSTRAINT DF_s_module_field_edit_required DEFAULT (0), b_readonly int NOT NULL CONSTRAINT DF_s_module_field_edit_readonly DEFAULT (0), b_disabled int NOT NULL CONSTRAINT DF_s_module_field_edit_disabled DEFAULT (0), b_visible int NOT NULL CONSTRAINT DF_s_module_field_edit_visible DEFAULT (1), b_group_id bigint NULL, b_xh int NOT NULL CONSTRAINT DF_s_module_field_edit_xh DEFAULT (0), CONSTRAINT PK_s_module_field_edit PRIMARY KEY (b_id), CONSTRAINT UQ_s_module_field_edit UNIQUE (b_module_id, b_field_id) ); CREATE INDEX IX_s_module_field_edit_module ON dbo.s_module_field_edit (b_module_id, b_xh, b_id); CREATE TABLE dbo.s_module_field_query ( b_id bigint NOT NULL, b_module_id bigint NOT NULL, b_field_id bigint NOT NULL, b_component varchar(30) NOT NULL, b_operator varchar(20) NOT NULL, b_default_value nvarchar(500) NULL, b_xh int NOT NULL CONSTRAINT DF_s_module_field_query_xh DEFAULT (0), b_canuse int NOT NULL CONSTRAINT DF_s_module_field_query_canuse DEFAULT (1), CONSTRAINT PK_s_module_field_query PRIMARY KEY (b_id), CONSTRAINT UQ_s_module_field_query UNIQUE (b_module_id, b_field_id) ); CREATE INDEX IX_s_module_field_query_module ON dbo.s_module_field_query (b_module_id, b_canuse, b_xh, b_id); CREATE TABLE dbo.s_module_power ( b_id bigint NOT NULL, b_module_id bigint NOT NULL, b_code varchar(50) NOT NULL, b_name nvarchar(100) NOT NULL, b_i18n varchar(150) NULL, b_xh int NOT NULL CONSTRAINT DF_s_module_power_xh DEFAULT (0), b_canuse int NOT NULL CONSTRAINT DF_s_module_power_canuse DEFAULT (1), CONSTRAINT PK_s_module_power PRIMARY KEY (b_id), CONSTRAINT UQ_s_module_power UNIQUE (b_module_id, b_code) ); CREATE TABLE dbo.b_user_module ( b_id bigint NOT NULL, b_user_id bigint NOT NULL, b_module_id bigint NOT NULL, b_inputuser_id bigint NOT NULL, b_inputdatetime datetime NOT NULL CONSTRAINT DF_b_user_module_inputdatetime DEFAULT (GETDATE()), CONSTRAINT PK_b_user_module PRIMARY KEY (b_id), CONSTRAINT UQ_b_user_module UNIQUE (b_user_id, b_module_id) ); CREATE TABLE dbo.b_user_power ( b_id bigint NOT NULL, b_user_id bigint NOT NULL, b_module_id bigint NOT NULL, b_power_id bigint NOT NULL, b_inputuser_id bigint NOT NULL, b_inputdatetime datetime NOT NULL CONSTRAINT DF_b_user_power_inputdatetime DEFAULT (GETDATE()), CONSTRAINT PK_b_user_power PRIMARY KEY (b_id), CONSTRAINT UQ_b_user_power UNIQUE (b_user_id, b_power_id) ); CREATE INDEX IX_b_user_power_module ON dbo.b_user_power (b_module_id, b_user_id); CREATE TABLE dbo.b_i18n ( b_id bigint NOT NULL, b_key varchar(150) NOT NULL, b_locale varchar(20) NOT NULL, b_value nvarchar(500) NOT NULL, CONSTRAINT PK_b_i18n PRIMARY KEY (b_id), CONSTRAINT UQ_b_i18n UNIQUE (b_key, b_locale) ); CREATE INDEX IX_b_i18n_key ON dbo.b_i18n (b_key, b_locale); DECLARE @SystemId bigint = 910000000000000001; DECLARE @MetadataId bigint = 910000000000000002; INSERT INTO dbo.s_module (b_id, b_code, b_parent_id, b_name, b_i18n, b_module_type, b_route, b_canmenu, b_canuse, b_xh) VALUES (@SystemId, 'm_system', NULL, N'系统管理', 'module.m_system', 'directory', NULL, 1, 1, 100), (@MetadataId, 'm_metadata', @SystemId, N'元数据配置', 'module.m_metadata', 'page', '/system/metadata', 1, 1, 10); INSERT INTO dbo.s_module_power (b_id, b_module_id, b_code, b_name, b_i18n, b_xh, b_canuse) VALUES (910000000000000101, @MetadataId, 'create', N'新增', 'power.m_metadata.create', 10, 1), (910000000000000102, @MetadataId, 'update', N'保存', 'power.m_metadata.update', 20, 1), (910000000000000103, @MetadataId, 'delete', N'删除', 'power.m_metadata.delete', 30, 1), (910000000000000104, @MetadataId, 'sync', N'同步字段', 'power.m_metadata.sync', 40, 1); INSERT INTO dbo.b_user_module (b_id, b_user_id, b_module_id, b_inputuser_id) VALUES (910000000000000201, @AdminId, @MetadataId, @AdminId); INSERT INTO dbo.b_user_power (b_id, b_user_id, b_module_id, b_power_id, b_inputuser_id) SELECT 910000000000000300 + ROW_NUMBER() OVER (ORDER BY b_id), @AdminId, b_module_id, b_id, @AdminId FROM dbo.s_module_power; EXEC sys.sp_set_session_context @key = N'allow_g3soft', @value = NULL; EXEC sys.sp_set_session_context @key = N'reset_admin_id', @value = NULL; COMMIT TRANSACTION;