В конце концов это была глупая проблема маршрутизации, которая соответствовала методу в контроллере, а не попадала в маршрут ServiceStack, как определено в модели интерфейса. Метод, который я оставил при тестировании.
(Немного исправлено - я слишком рано нажал "Enter")
Я начал задумываться над этим, и когда он затронул некоторые довольно сложные концепции SQL, он быстро превратился в следующего монстра. Если возможно, вам лучше адаптировать решение THEn; или, как советуют многие другие, использование кода приложения для заполнения пробелов может быть предпочтительнее.
-- A temp table holding the 30 dates that you want to check
DECLARE @Foo Table (Date smalldatetime not null)
-- Populate the table using a common "tally table" methodology (I got this from SQL Server magazine long ago)
;WITH
L0 AS (SELECT 1 AS C UNION ALL SELECT 1), --2 rows
L1 AS (SELECT 1 AS C FROM L0 AS A, L0 AS B),--4 rows
L2 AS (SELECT 1 AS C FROM L1 AS A, L1 AS B),--16 rows
L3 AS (SELECT 1 AS C FROM L2 AS A, L2 AS B),--256 rows
Tally AS (SELECT ROW_NUMBER() OVER(ORDER BY C) AS Number FROM L3)
INSERT @Foo (Date)
select dateadd(dd, datediff(dd, 0, dateadd(dd, -number + 1, getdate())), 0)
from Tally
where Number < 31
Шаг 1 - создать временную таблицу, содержащую 30 дат, которые вас интересуют. Эта абстрактная странность представляет собой самый быстрый из известных способов построить таблицу последовательных целых чисел; добавьте еще несколько подзапросов, и вы сможете заполнить миллионы или больше за считанные секунды. Я беру первые 30 и использую dateadd и текущую дату / время, чтобы преобразовать их в даты. Если у вас уже есть "фиксированная" таблица с 1-30, вы можете использовать ее и полностью пропустить CTE (заменив таблицу "Tally"
Эта функция присутствует в дополнение SSMSBoost для SSMS (я - разработчик этого дополнения):
Shift-F5 выберет текущий оператор (который позволяет Вам рассматривать то, что Вы в настоящее время собираетесь выполнить). Затем Вы нажимаете F5 и выполняете его.
вы всегда можете использовать инструменты командной строки sqlcmd и osql. Я сделал много sybase в командной строке unix, используя функцию-оболочку, которая передала мою командную строку в эквивалент (который, как мне кажется, был isql?). Я использовал vi, так что, может быть, тогда я был просто сумасшедшим; -)
Если вас беспокоит необходимость перемещать руку к части мыши, вы можете удерживать Ctrl и одновременно нажимать клавишу со стрелкой вверх или вниз, чтобы сразу выбрать строку.
Я не думаю, что это возможно сделать, используя только студию управления. НО вы можете использовать программное обеспечение для сочетания клавиш (например, http://www.autohotkey.com/ ), чтобы записать специальную последовательность и назначить ее для горячей клавиши. В вашем случае вам нужно:
<home><shift-end><F5>
Это выберет текущую строку и выполнит ее.
Я использую обходной путь: я комментирую запросы, которые не использую. Вы можете использовать CTRL-K, CTRL-C, чтобы прокомментировать выделенный вами SQL. Используйте CTRL-K, CTRL-U, чтобы раскомментировать. Таким образом, вы можете прокомментировать все остальные запросы и выполнить интересующий вас запрос с помощью F5.
Примечание: как ни странно, даже бесплатная Toad для SQL Server не позволяет запускать только оператор под курсором.
Действительно раздражает, что TOAD не выполняет то, что обещает:
Из справки TOAD: [F9 для выполнения] часть оператора, которая может содержать один или больше заявлений. Вы можете выбрать часть инструкции, поместив курсор внутри инструкции или рядом с ней, или выбрав инструкцию. Примечание. Жаба считает «смежными» все операторы (включая комментарии), отделенные от курсора или друг от друга менее чем двумя пустыми строками. Если во время выполнения оператора возникает ошибка, отображается сообщение об ошибке, позволяющее либо проигнорировать ошибку и продолжить, либо прервать выполнение.
Я пробовал это миллион раз, но он просто выполняет весь сценарий. Я хотел найти его в группе поддержки пользователей (toadss (at) yahoogroups.com), но у yahoo самая дурацкая поисковая система! Он даже не может найти ключевое слово «жаба» в почтовой группе «жаба», DOH!
Я считаю, что TOAD - лучший инструмент для запросов, но отсутствие этой функции меня тоже очень раздражает.
ОБНОВЛЕНИЕ: РЕШЕНИЕ НАЙДЕНО! Я задал этот вопрос в почтовой группе toadss и получил ответ. В отличие от Oracle, вы должны разделять операторы в SQL Server ключевым словом GO после каждого оператора. Только если вы сделаете это, кнопка F9 будет работать должным образом, выполняя текущий оператор.