我是团队中的初级开发人员。在一个项目中,我们在一个SQL Server实例中有大约20个数据库。我们拥有这些数据库的db_owner权限。
我的目的是监控这些数据库中的某些内容(例如文件大小)。但是因为我们没有sysadmin权限,所以我们没有这些数据库的所有管理工具。现在,我的解决方案是使用存储过程编写“报告脚本”。这些sp广泛使用sp_foreachdb。我的问题是,对于这个问题,这是一个很好的方法吗?还有哪些其他方法/解决方案?
答案 0 :(得分:0)
我不确定这是否更好,但你可以设置21数据库,其中有一个表跟踪上一次其他20个数据库中的一个有趣的表被更新。如果您上次运行报告时也在此表中进行了跟踪,则可以轻松了解自上次报告周期以来哪些数据库已更改。
不确定您的表格如何更新,以及您是否可以修改更新存储过程以标记您的第21个数据库 - 可能是插入/更新触发器?
答案 1 :(得分:0)
听起来你正试图想出一个政治问题的技术解决方案。如果您没有权利监控您需要监控的事情,那么就不会有足够好的解决方案。仅仅因为监视文件大小是不够的 - 您还想知道驱动器上的可用空间,如果没有更多权限,您将无法检索它。
我会询问系统管理员是否可以为他们提供一个将使用sysadmin权限运行的存储过程。他们可以检查代码,确保你没有做任何恶意的事情,然后用证书签署存储过程。即使您不在sysadmin角色中,他们也可以授予您运行存储过程的权限(但不能更改它),并且您将获得结果。
另一种方法是为他们提供T-SQL代码,他们可以将其作为计划的SQL Server代理作业实现,并将结果发送给您。您获得了数据,但没有获得权利。
我对sp_msforeachdb方法持谨慎态度,因为如果您不是系统管理员,那么您可能并不总是拥有系统上每个数据库的权限。如果他们实现任何第三方监视工具或与更多部门共享服务器,则sp_msforeachdb代码可能会失败。