基于MS SQL Server的SAP Business One 9.3技术问题咨询
SAP Business One 9.3(MS SQL)技术问题解答
1. 表、视图及触发器数量
标准安装环境下(不含额外行业包/本地化组件),SAP Business One 9.3的对象数量大致范围如下:
- 表:1200-1400张
- 视图:800-1000个
- 触发器:600-800个
如需精确数值,可在MS SQL Server中针对SAP公司数据库执行以下查询:
-- 查询用户表数量 SELECT COUNT(*) AS 表数量 FROM sys.tables WHERE type = 'U'; -- 查询视图数量 SELECT COUNT(*) AS 视图数量 FROM sys.views WHERE type = 'V'; -- 查询触发器数量 SELECT COUNT(*) AS 触发器数量 FROM sys.triggers WHERE type = 'TR';
2. 表名四字母前缀含义
SAP Business One的表名四字母前缀是功能模块/业务域的标识,常见前缀及对应含义如下:
- OADM:系统管理模块相关表
- OCRD:业务伙伴(客户/供应商)相关表
- OINV:销售发票相关表
- OPOR:采购订单相关表
- OITM:物料/商品主数据相关表
- ORDR:销售订单相关表
- OPDN:采购收货相关表
- ODLN:销售交货相关表
若需查看表的详细用途,可通过查询数据库扩展属性获取官方描述:
SELECT t.name AS 表名称, ISNULL(ep.value, '无官方描述') AS 表用途描述 FROM sys.tables t LEFT JOIN sys.extended_properties ep ON t.object_id = ep.major_id AND ep.minor_id = 0 AND ep.name = 'MS_Description' WHERE t.name LIKE 'O___' ORDER BY t.name;
3. 表与视图关系图生成及显示问题解决
无法显示关系图的常见原因
- 数据库未启用关系图支持:MS SQL Server默认未为用户数据库创建关系图存储表
- 权限不足:当前登录账号缺少
ALTER ANY DATABASE DIAGRAM权限 - 数据库元数据损坏:若数据库从低版本升级,可能导致关系图相关元数据异常
解决步骤
- 启用关系图支持
执行以下SQL为目标SAP公司数据库创建关系图存储结构:USE [你的SAP公司数据库名]; GO IF NOT EXISTS (SELECT * FROM sys.sysobjects WHERE id = OBJECT_ID('dbo.sysdiagrams') AND type = 'U') BEGIN CREATE TABLE dbo.sysdiagrams ( diagram_id INT IDENTITY(1,1) PRIMARY KEY, name NVARCHAR(128) NOT NULL, principal_id INT NOT NULL, diagram_image VARBINARY(MAX) NOT NULL, CONSTRAINT UK_principal_name UNIQUE (principal_id, name) ); EXEC sys.sp_addextendedproperty @name=N'microsoft_database_tools_support', @value=1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'sysdiagrams'; END GO - 分配必要权限
为当前账号授予关系图操作权限:USE [你的SAP公司数据库名]; GO GRANT ALTER ANY DATABASE DIAGRAM TO [你的数据库账号]; GO - 手动生成关系图
打开SQL Server Management Studio(SSMS):- 展开目标数据库,右键点击数据库关系图,选择新建数据库关系图
- 在弹窗中选择需要添加的表/视图,点击添加,系统会自动识别外键关系并生成可视化图
替代方案
若SSMS生成逻辑仍有问题,可使用SAP Business One Studio或第三方数据库建模工具导入数据库结构生成关系图。
内容的提问来源于stack exchange,提问作者D-NL
相关产品推荐
相关产品推荐

