У меня есть база данных, которая реплицируется на двух серверах, реальном сервере и тестовом сервере, так что всякий раз, когда это необходимо, база данных «test» перезаписывается (так что я могу сбросить все, если я сделал беспорядок.) Я хочу хранимую процедуру в базе данных «test», которая будет работать только в базе данных «test», но для этого я нужно также иметь его в «живой» базе данных, чтобы его можно было скопировать, когда «тест» перезаписан. Процедура начинается:Создание хранимой процедуры, несмотря на ошибки (для передачи на другой сервер)
if @@SERVERNAME<>'TEST'
begin
raiserror ('NOT ON TEST! This SP must only be run on TEST.',16,1)
return
end
Так что, если он работает в прямом эфире, он сразу же выходит.
К сожалению, сервер базы данных «Live» использует более старую версию SQL и, похоже, не понимает операторы lead/lag/over в сценарии и отказывается создавать процедуру из-за этих ошибок «неправильного синтаксиса» ,
SP определенно работает на тестовом сервере. Есть ли способ игнорировать сообщения об ошибках при создании хранимой процедуры?
Я нашел предыдущий вопрос, который объяснил, как сделать a хранимой процедурой с тем же именем, но мне нужна хранимая процедура, чтобы содержать скрипт, который, по мнению сервера, является неправильным.
О какой БД вы спрашиваете, MySQL или SQL Server? –
SQL Server (Microsoft SQL Server Management Studio) –
Оберните запросы, которые не работают в строку, и [выполнить] (https://msdn.microsoft.com/en-us/library/ms188332.aspx) их как динамические SQL. – Shiffty