我发现我的大多数客户根本没有记录他们的数据库,我觉得这很可怕。为了介绍一些更好的实践,我想知道人们正在使用哪些工具/流程。
我不是在谈论逆向工程/记录现有数据库,而是主要讨论开发系统/数据库时的文档最佳实践。
这是SQL Server 的文档中讲的ROLLBACK
语句。在该页面上,它声明其语法如下:
ROLLBACK { TRAN | TRANSACTION }
[ transaction_name | @tran_name_variable
| savepoint_name | @savepoint_variable ]
[ ; ]
Run Code Online (Sandbox Code Playgroud)
显然方括号内的内容是可选的,似乎您应该从TRAN
或 中选择一个TRASACTION
。但实际上,您可以完全省略两者,并且ROLLBACK
是一个完全有效的语句。这是错误还是故意的?
我希望这是一个比“阅读一本 1000 页的书”更短答案的问题,但是,如果这是真实情况,那么就用它来打击我。
我不是真正的 DBA,我是一名软件开发人员,我意识到我们需要 DBA,但我工作的商店的 DBA 为零。然而,我们的 MS SQL 数据库设计包括几个核心存储过程,是一个巨大的混乱。存储过程很慢,我们怀疑它们有错误,但我们甚至不知道它们应该如何工作,所以我们不知道如何修复它们。
作为开始,我决定我们将记录它应该如何工作,然后我们将开始单元测试,并构建一组单元测试来帮助证明存储过程确实可以工作。它们执行的逻辑是我们应用程序的关键部分,可以说,它是我们公司主要产品的“皇冠上的明珠”,它的工作方式完全没有记录。
我正在寻找专业 DBA 可能希望现有的特定技术文档,或者他们可能会自己编写(如果必须),以了解相互调用的巨大存储过程网络。
记录大型存储过程的常用格式是什么?每个输入参数的预期值的描述(即“前置条件”、“后置条件”,即布尔参数在打开或关闭时会发生什么变化等?)
人们通常如何记录它?仅 SQL 注释?特定于目的的外部工具?外部“文档”?除了 MS SQL Management Studio 之外,我们没有 SQL 工具,但我们想知道是否有一种工具可以更好地理解、记录和测试我们的环境。也许这是问我问题的更好方式;我需要什么工具来解决我们的烂摊子?
我们的目标是能够:
A. 使用我们生成的文档或我们添加到环境中的任何工具来帮助理解过程应该如何工作,然后我们可以继续为存储过程创建单元测试覆盖率。
B. 向客户端应用程序开发人员展示如何正确调用这些复杂的存储过程。
C. 单元测试我们的存储过程。
sql-server stored-procedures documentation sql-server-2008-r2
所以,标题总结了它。
我有一个包含 28 个表和 86 个必须进行逆向工程的存储过程的 SQL Server 数据库。我很确定有些表从未使用过,并且并非所有 proc 都使用过。
最大的问题是所有创建用于此数据库的 Windows 服务以及所有软件和数据库文档都丢失了,并且无处可寻设计整个系统的人。
我已经设法创建了一个 ER 图来帮助我理解这些关系,但是由于我没有数据库管理经验,我不知道应该从哪里开始。
如果不打算在这里问这种问题,我也很抱歉。
我最近被某公司 X 聘为唯一的 IT 专家,我的任务是修复他们的应用程序,在我看来,最好的开始方式是了解数据库。
他们当前的数据库是一个有 186 个表的 MySQL 数据库(请注意,有些表是空的,因为天知道为什么)。应用程序通过 MS Access 数据库接口与数据库通信。(我问自己为什么开发人员也这样做)
问题是,我如何开始处理这个大型无证数据库?是的,它没有记录,因为应用程序的开发人员不愿意给我 ERD 或数据字典或任何关于数据库的信息,以使我的生活更轻松。您如何建议承担这种了解相当大数据库的每个角落和缝隙的危险努力?
相关问题:如何深入一个丑陋的数据库?
我正在处理一个包含用于迁移的映射数据库元素的项目,我想知道其他人使用哪些工具来执行此操作?
Excel 是一种非常灵活的记录简单映射的方式,但我想知道是否有人有他们遵循的特定方法或他们可以推荐的其他工具?
在阅读了一篇日期为2012年的关于未记录的函数fn_dblog 和 fn_dump_dblog的文章后,我想知道如果它们已经存在很长时间并且非常有用,为什么它们仍然未记录且不受支持。与这篇2004 年的sp_msforeachtable 和 sp_msforeachdb文章相同。
我可以从其中一个回答论坛上的问题中受益(在日志备份期间是将数据备份到操作开始还是结束?),但我想知道为什么它们随 SQL Server 一起提供直到现在,以未记录和不受支持的方式。
我知道有人说他们不可靠,但如果这是唯一的原因,他们本可以在 16 年内得到纠正。所以一定有另一种解释。
我是 Oracle 数据库的新手。我已经习惯了 SQL Server 和表和列的描述字段 (MS_Description) 用于文档目的。Oracle 是否有等价物?记录 Oracle 数据库的最佳实践是什么?
Oracle SQL Developer(我使用的是 v3.2)有一个名为“DB Doc”的特性,它为数据库对象生成文档。我主要想用它来为我的存储过程、函数、包和类型生成文档。但是,我找不到任何文档来描述我应该使用什么语法。
我已经确定我应该/* ... */
在我的程序/任何东西上方的行上使用注释,并且(通过从 JavaDoc 借用)我已经成功地使用了@param
和@returns
语句,但我不确定我还能使用什么。例如,是否有作者、版本、数据修改等字段?
我已经对这个站点、谷歌和 Oracle 的文档进行了多次搜索,但都无济于事!
oracle oracle-11g-r2 documentation plsql oracle-sql-developer
今天我想定义一个 uuid 的 value 00000000-0000-0000-0000-000000000000
。作为一名 SQL Server 人员,我通常会...
select cast(0x0 as uniqueidentifier);
Run Code Online (Sandbox Code Playgroud)
...但我现在在 postgres 世界中,所以我提出了一个明智的...
select cast('\x00'::bytea as uuid);
Run Code Online (Sandbox Code Playgroud)
ERROR: cannot cast type bytea to uuid
LINE 1: select cast('\x00'::bytea as uuid);
^
Run Code Online (Sandbox Code Playgroud)
该死!所以我头部到对类型转换的Postgres文档希望看到像DOC这一个来审查,数据类型,我可以通过与默认情况下,无需施展创造一个显式类型转换。
如果文档中确实存在这样的图表,那么它就会被很好地隐藏起来。谷歌在这方面也不是很有帮助。
是否有关于 postgresql 中默认允许的类型转换的良好文档参考?
需要明确的是,我实际上并不关心 uuid
documentation ×10
sql-server ×5
oracle ×2
datatypes ×1
functions ×1
metadata ×1
migration ×1
mysql ×1
plsql ×1
postgresql ×1
rollback ×1
transaction ×1