我有一些数据库部署脚本需要针对本地和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实例上执行?
((我可能只是缺少正确的搜索词来找到答案,如果可以的话,抱歉。)
目前,似乎没有可从T-SQL访问的唯一确定性指示符,该指示符表明实例正在AWS RDS中运行。
相反,有许多设置/对象指示实例可能在RDS上运行,包括(但不限于):
rdsadmin
数据库的存在(DBID为5)SUSER_SNAME(0x01) = 'rdsa'
msdb
中存在存储过程,其名称以rds_
开头-例如,msdb.dbo.rds_backup_database
如果其中两个测试为真,则该实例可能正在RDS中运行。