在我的公司中,我们有多个虚拟机托管 SQL Server 2008 R2,其中一些机器的性能与其他机器不同,有些是因为 Vmware 主机非常繁忙,有些是因为与 NAS 的连接速度较慢。
有没有一种方法可以在测试 SQL 数据库或其他已知的最佳实践中运行一些 SQL 代码,我可以用它在每个 VM 和基准/基准性能中运行一些性能测试,以便我可以在移动之前了解哪台机器的行为比其他机器更好那些机器到 Prod 或 UAT 环境?谢谢,大卫。
在我们的一个 SQL Server 中,我们连接了多个数据库,其中大多数包含一个小表,比如说 dbo.DBType,该表将始终包含 1 条记录和两列,第一列告诉我数据库是类型 A 还是 B (只允许 A 和 B)。
有没有办法可以查询 SQL Server 的主数据库并检索 A 类型或 B 类型的所有数据库的列表?
我知道我可以在一个循环内连接到它们中的每一个并检查包含的 DBType 表,但我在想
使用以下查询:
SELECT Name, Status FROM dbo.sysdatabases
WHERE name IN ( 'db_name' )
Run Code Online (Sandbox Code Playgroud)
在某些情况下,我得到状态 = 24,有时是 1024,有时是 65544
我看到,即使状态为 24,我也可以从 SQL Management Studio 打开并检查数据库的内容,但不能从检查状态至少为 1024 的旧应用程序中检查。
当我要求 DBA 解决这个问题时,他们运行了一些魔法脚本,状态上升到 65544 并且一切正常,我希望这些状态有一些名称,而不仅仅是像 24、1024、65544 这样的数字。
我已经检查过这个链接:sysdatabases
其中包含此表:
状态位,其中一些可以由用户使用 ALTER DATABASE 设置(只读、离线、单用户等):
1 = 自动关闭;用 ALTER DATABASE 设置。
4 = 选择进入/批量复制;使用 ALTER DATABASE RECOVERY 设置。
8 = 截断。登录chkpt;使用 ALTER DATABASE RECOVERY 设置。
16 = 撕页检测,通过 ALTER DATABASE 设置。
32 = 加载。
64 = 预恢复。
128 = 恢复。
256 = 未恢复。
512 = 离线;用 …