Можно ли вызвать хранимую процедуру в базе данных Azure через связанный сервер? - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть две SQL серверные базы данных, одна в Azure (Azure SqlDb), которая используется для внешнего интерфейса, и одна локальная (бэкэнд).

В Azure , нет вакансий, кроме Elasti c Работа с базой данных . Но мне нужна хранимая процедура обслуживания для запуска каждые 20 минут.

База данных Azure уже настроена как связанный сервер, поэтому мне кажется, что было бы легко настроить задание в локальная база данных, а затем задание просто вызывает хранимую процедуру на Azure Db.

Возможно ли это? Мне кажется, что так и должно быть, но я не делал этого раньше.

Это кажется гораздо проще, чем настроить Elasti c Database Job для его запуска.

1 Ответ

2 голосов
/ 04 апреля 2020

Конечно. Убедитесь, что вы включили RP C OUT на связанном сервере, тогда вы можете запускать произвольные пакеты T SQL, например:

EXEC sp_dropserver @server=N'MyAzureSqlDB', @droplogins='droplogins'
GO

EXEC sp_addlinkedserver @server = N'MyAzureSqlDB', 
                        @srvproduct=N'', 
                        @provider=N'SQLNCLI', 
                        @datasrc=N'xxxxxxxx.database.windows.net', 
                        @catalog=N'MyDatabase'

EXEC sp_addlinkedsrvlogin @rmtsrvname=N'MyAzureSqlDB',
                          @useself=N'False',
                          @locallogin=NULL,
                          @rmtuser=N'MyUserName',
                          @rmtpassword='xxxxxxxx'
GO

EXEC sp_serveroption @server=N'MyAzureSqlDB', @optname=N'collation compatible', @optvalue=N'true'
EXEC sp_serveroption @server=N'MyAzureSqlDB', @optname=N'data access', @optvalue=N'true'
EXEC sp_serveroption @server=N'MyAzureSqlDB', @optname=N'rpc out', @optvalue=N'true'
EXEC sp_serveroption @server=N'MyAzureSqlDB', @optname=N'remote proc transaction promotion', @optvalue=N'false'
GO

exec ('exec SomeProc') at MyAzureSqlDb
...