如何找到我实际可以连接的数据库列表?
我正在使用sys.master_files检查数据库文件的状态,但是,在辅助数据库上,数据库正在同步并且显示为在线
我不能做到这一点:
use my_database
我不能这样做:
select * from my_database.sys.master_files
消息 976,级别 14,状态 1,第 364 行 目标数据库“my_database”正在参与可用性组,当前无法访问查询。数据移动已暂停,或者可用性副本未启用读取访问。要允许对此数据库和可用性组中的其他数据库进行只读访问,请启用对该组中的一个或多个辅助可用性副本的读取访问权限。有关详细信息,请参阅 SQL Server 联机丛书中的 ALTER AVAILABILITY GROUP 语句。
您需要查看处于次要角色的副本是否设置为可读。这要求副本处于可以读取的状态(主要/次要角色、数据库运行状况良好等)。
要检查副本是否设置为可读的辅助副本,请使用sys.availability_replicas并检查
secondary_role_allow_connections_desc
当前状态。请注意,这READ_ONLY
需要额外的连接字符串参数,并且会导致与上面引用的错误消息不同的错误消息。要检查副本是否足够健康以进行查询,请通过sys.dm_hadr_database_replica_states
synchronization_state_desc
检查数据库的状态,以获取、database_state_desc
和中的值is_suspended
。这些值可以在主副本上获取,也可以在辅助副本本地获取。辅助副本只能看到其自身,因此,如果您尝试广泛映射此拓扑,则只需从主副本运行查询。请注意,这些值是在线值,可以根据配置进行更改,这也是在线更改(可以随时更改,无需停机)。
这不起作用:
这有效: