sql-server - 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 实例上执行?
(我可能只是错过了正确的搜索词来找到答案 - 如果是这样,请道歉。)
解决方案
目前,似乎没有可从 T-SQL 访问的单一明确指标表明实例正在 AWS RDS 中运行。
相反,有许多设置/对象表明实例可能正在 RDS 上运行,包括(但不限于):
- 存在
rdsadmin
数据库(DBID 为 5) SUSER_SNAME(0x01) = 'rdsa'
msdb
以名称开头的存储过程的存在rds_
- 例如,msdb.dbo.rds_backup_database
如果其中任何两个测试为真,则很可能该实例正在 RDS 中运行。
推荐阅读
- flutter - Flutter 连续检查 GPS 状态
- python - 如何在一段时间内映射股票的特定行业?
- laravel - Laradock localstack 无法访问 s3 本地文件(错误 403)
- javascript - Surveyjs 单选按钮加载保存的值不突出显示单选按钮
- groovy - 如何将来自两个不同列表的输出传递到下一个流程中的连续流程
- nlp - 张量 a (2) 的大小必须与非单维 1 的张量 b (39) 的大小相匹配
- c# - ACMEv1 上的帐户创建已禁用 - Let's Encrypt
- angular - 带卡滑块的角 ngb 旋转木马
- android - 如何检查 Manifest.permission.MANAGE_EXTERNAL_STORAGE 是否被授予?
- javascript - 移动导航栏工作不正确