从哪里开始了解未知数据库

Hum*_*All 12 sql-server documentation

所以,标题总结了它。

我有一个包含 28 个表和 86 个必须进行逆向工程的存储过程的 SQL Server 数据库。我很确定有些表从未使用过,并且并非所有 proc 都使用过。

最大的问题是所有创建用于此数据库的 Windows 服务以及所有软件和数据库文档都丢失了,并且无处可寻设计整个系统的人。

我已经设法创建了一个 ER 图来帮助我理解这些关系,但是由于我没有数据库管理经验,我不知道应该从哪里开始。

如果不打算在这里问这种问题,我也很抱歉。

Kin*_*hah 7

最好的开始是使用SQL Power Doc记录您的数据库

使用 Windows PowerShell 的 SQL Server 和 Windows 文档

SQL Power Doc 是一组 Windows PowerShell 脚本和模块,用于发现、记录和诊断 SQL Server 实例及其底层 Windows 操作系统和机器配置。SQL Power Doc 适用于从 SQL Server 2000 到 2014 的所有版本的 SQL Server,以及从 Windows 2000 和 Windows XP 到 Windows Server 2012 R2 和 Windows 8 的所有版本的 Windows Server 和消费者 Windows 操作系统。 SQL Power Doc 还能够记录 Windows Azure SQL 数据库。

注意:我已经使用过它,它将为您记录和理解您的数据库服务器实例提供一个非常好的开始。


小智 5

三个非常快速的步骤让你开始:

1)

USE DatabaseName

SELECT    [TableName] = OBJECT_NAME(object_id),
last_user_update, last_user_seek, last_user_scan, last_user_lookup
FROM    sys.dm_db_index_usage_stats
WHERE    database_id = DB_ID('DatabaseName')
Run Code Online (Sandbox Code Playgroud)

会告诉你上次使用每个索引的时间,包括聚集索引。因此,至少让您了解哪些表正在被访问(哪些不是。)

2) 在使用应用程序时打开扩展事件会话(或服务器端 Profiler 跟踪,如果您运行的是 SQL 2012 之前的版本)一小时左右。您还可以要求用户以特定顺序在应用程序中执行各种操作,以便您可以将其与跟踪/会话相关联。

一个有用的建议:如果您可以修改应用程序使用的连接字符串,请附加“;Application Name=AppNameGoesHere”,以便您可以对该特定应用程序名称运行跟踪过滤。无论如何都是好习惯。

3) 获取在非生产服务器上运行的应用程序版本。为应用程序开发一系列行为驱动的测试(“当用户单击“新建项目”按钮时,它会为该用户创建一个新项目,等等)通过重命名开始软删除您认为与测试无关的对象(我使用像 objectName_DEPRECATED_YYYYMMDD 这样的格式 - 日期是我计划实际删除它的日期。)重新验证所有测试。

通过扩展事件会话、索引使用 DMV 和软删除的组合,您应该能够识别应用程序正在使用的主要对象,并就哪个对象做什么有一个良好的普遍共识。

祝你好运!