Amazon RDS SQL Server:如何检测是否是RDS?

2024-03-06

我正在尝试将我的数据库移植到 RDS。由于限制需要做一些改变。

是否可以检测当前数据库位于 RDS 中的内部脚本(存储过程等)?

更新。 我在我的函数中使用这种方式进行测试:

if CHARINDEX(N'EC2AMAZ',(cast(serverproperty('ServerName') as nvarchar(256))))>0 
   return 1 
else 
   return 0

我喜欢 @xiani 的方法,并决定稍微增强它(如果 SQL Server 的“正常”实例有一个[rdsadmin]数据库)。

DECLARE @IsAmazonRDS BIT = 0;

--1st test: does the [rdsadmin] database exist?
IF DB_ID('rdsadmin') IS NOT NULL
BEGIN
    BEGIN TRY
        --2nd test: If this is an Amazon RDS instance, we should not able to access the database "model" under the current security context.
        DECLARE @FileCount INT;
        SELECT @FileCount = COUNT(*) FROM model.sys.database_files;
    END TRY
    BEGIN CATCH
        SET @IsAmazonRDS = 1;
        --Comment/uncomment to verify the flag is set.
        --SELECT 'Inside Catch';
    END CATCH
END

可以根据您确定的标准进行第三次、第四次等额外检查来补充。自己决定你想走多远。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Amazon RDS SQL Server:如何检测是否是RDS? 的相关文章

随机推荐