Как сценарий SQL должен определять, что он выполняется на экземпляре сервера AWS RDS SQL? - PullRequest
0 голосов
/ 07 мая 2020

У меня есть несколько сценариев развертывания базы данных, которые должны быть нацелены на локальные и AWS RDS SQL серверные экземпляры, но некоторые из сценариев выполняют команды, которые не поддерживаются RDS.

два скрипта (которые будут на 90% идентичны), я бы хотел использовать процедурный T- SQL logi c, чтобы пропускать / изменять разделы скрипта, когда он работает в RDS.

В настоящий момент , Я использую следующий лог: c

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

Есть ли лучший / более надежный способ определить, что сценарий выполняется на экземпляре сервера RDS SQL?

(Возможно, мне просто не хватает правильных условий поиска, чтобы найти ответ - извиняюсь, если так.)

1 Ответ

1 голос
/ 11 мая 2020

В настоящее время похоже, что не существует единого окончательного индикатора, доступного из T- SQL, который указывает, что экземпляр работает в AWS RDS.

Вместо этого существует ряд настроек / объекты, указывающие, что экземпляр вероятно работает на RDS, включая (но не ограничиваясь):

  • Наличие базы данных rdsadmin (с DBID 5)
  • SUSER_SNAME(0x01) = 'rdsa'
  • Наличие хранимых процедур в msdb с именами, начинающимися с rds_ - например, msdb.dbo.rds_backup_database

Если любые два из них тесты верны, вероятно, экземпляр работает в RDS.

...