2014-10-19 4 views
-3

Предположим, что у меня есть следующие вопросыКак я могу отделить SQL запросов

select userName, password, email 
from tblUsersProfile 
where email = '145' or userName = '112' 

select userName, password, email 
from tblUsersProfile 
where email = '80' or userName = '70' 

select userName, password, email 
from tblUsersProfile 
where email = '129' or userName = '169' 

select userName, password, email 
from tblUsersProfile 
where email = '1' or userName = '2' 

select 
    AVG(PokemonLevel) as AvgLevel, PokemonId 
from 
    tblUsersPokemons 
group by 
    PokemonId 
order by 
    PokemonId asc 

insert into tblOnlineUsersCounts 
    select 
     (select 
      COUNT(LastMoveTime) 
     from 
      tblUsersProfile 
     where 
      LastMoveTime > DATEADD(HOUR, -24, sysutcdatetime())), 
     (select 
      COUNT(LastMoveTime) 
     from 
      tblUsersProfile 
     where 
      LastMoveTime > DATEADD(DAY, -7, sysutcdatetime())), 
     (select 
      COUNT(LastMoveTime) 
     from 
      tblUsersProfile 
     where 
      LastMoveTime > DATEADD(DAY, -30, sysutcdatetime())) 

select 
    count(Id) as TotalCount, PokemonId 
from 
    tblUsersPokemons 
group by 
    PokemonId 
order by 
    PokemonId asc 

Теперь, когда я исполняю их в SQL Server Management Studio, он пытается все, и если один терпит неудачу все терпит неудачу, которая означает, что все из них считается как один запрос

Кроме того, когда я правая кнопка мыши в SSMS и нажмите анализировать запрос в ядре базы данных настройки советник также считать их одним запросом, а не каждым из них есть независимые запросы

Я хочу отформатировать их таким образом, что оба SSMS должны относиться к ним, как каждый из них представляет собой отдельный запрос

Таким образом, даже если один выходит из строя, SSMS должна выполнять другие рабочие из них

Что такое правильный формат для достижения этой цели ?

Ты очень

, что эти downvotes для?

+0

Для обработки ошибок вы должны использовать 'TRY' и' CATCH'. Другие могут предлагать использовать 'GO' между вашими утверждениями. –

+0

@RaduGheorghiu, например, когда я беру этот запрос в профилировщик, он рассматривается как один пакетный запрос, а не каждый из них - это независимые запросы. – MonsterMMORPG

+0

@RaduGheorghiu go похоже на работу очень много :) – MonsterMMORPG

ответ

3

В случае возникновения ошибки в любом из ваших запросов вы должны использовать TRY-CATCH для этой обработки ошибок.

Кроме того, с помощью GO между вашими запросами есть опция.

+0

ty для ответа go похоже на трюк. Какова логика этого, вы можете объяснить – MonsterMMORPG

+0

@MonsterMMORPG Так же, как вы сказали в своем вопросе, если вы просмотрите Profiler, похоже, что это одна партия запросов. Используя 'GO', вы фактически разделяете свои запросы несколькими партиями. Таким образом, каждый запрос запускается сам по себе, независимо от других. Вы можете прочитать документацию для GO и TRY-CATCH на MSDN для получения более подробной информации. –

+0

Я всегда отмечаю как решенный, но я не понимаю, почему получил downvotes – MonsterMMORPG

Смежные вопросы