SQL脚本应如何检测到它正在AWS RDS SQL Server实例上执行?

问题描述 投票:0回答:1

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

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

此刻,我正在使用以下逻辑

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

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

((我可能只是缺少正确的搜索词来找到答案,如果可以的话,抱歉。)

sql-server tsql amazon-rds
1个回答
0
投票

目前,似乎没有可从T-SQL访问的唯一确定性指示符,该指示符表明实例正在AWS RDS中运行。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.