首页 > 解决方案 > SQL 脚本应如何检测它正在 AWS RDS SQL Server 实例上执行?

问题描述

我有一些需要针对本地和 AWS RDS SQL Server 实例的数据库部署脚本,但有些脚本执行 RDS 不支持的命令。

我不想维护两个脚本(90% 相同),而是在 RDS 中运行时使用过程 T-SQL 逻辑跳过/修改脚本的各个部分。

目前,我正在使用以下逻辑

IF EXISTS (SELECT * FROM sys.databases WHERE name = 'rdsadmin' AND database_id = 5)
...

是否有更好/更可靠的方法来确定脚本是否在 RDS SQL Server 实例上执行?

(我可能只是错过了正确的搜索词来找到答案 - 如果是这样,请道歉。)

标签: sql-servertsqlamazon-rds

解决方案


目前,似乎没有可从 T-SQL 访问的单一明确指标表明实例正在 AWS RDS 中运行。

相反,有许多设置/对象表明实例可能正在 RDS 上运行,包括(但不限于):

  • 存在rdsadmin数据库(DBID 为 5)
  • SUSER_SNAME(0x01) = 'rdsa'
  • msdb以名称开头的存储过程的存在rds_- 例如,msdb.dbo.rds_backup_database

如果其中任何两个测试为真,则很可能该实例正在 RDS 中运行。


推荐阅读