Я давно являюсь поклонником ускорителей клавиатуры с хранимыми процедурами, как описано в Эта статья. Однако, когда мы перешли от SQL 2000 к 2005 и от Query Analyzer к Management Studio, обработка аргументов изменилась. В QA аргументы, разделенные запятыми, автоматически считывались как два отдельных аргумента. В SSMS - по крайней мере, для меня - это читается как один аргумент с запятыми. Точно так же, если я передаю один аргумент с одинарными кавычками, я получаю синтаксическую ошибку если я не избегу кавычек ('->' '). В приведенной выше статье автор подразумевает, что этого не должно быть для SSMS, но даже в ее точном примере аргументы, разделенные запятыми, по-прежнему интерпретируются как один аргумент для каждой установки SSMS, на которой я пробовал (3 из их), работающего с каждой установкой SQL Server, которую я пробовал (4 из них).
Например, введя в SSMS следующее:
Person,4
затем выбрав его и запустив ярлык, я получаю сообщение об ошибке «Недопустимое имя объекта 'Person, 4'.
Кто-нибудь знает, как это исправить? Кто-нибудь вообще пользуется этими ярлыками? Я несколько раз искал эту проблему в Google за последние два года, и мне не повезло.
Обновлено: может быть проблема с конкретной сборкой SSMS. У меня есть следующий пост ниже.





Я никогда не пробовал это, пока не прочитал ваш вопрос, а затем прочитал статью, на которую вы ссылались, так что относитесь к этому с недоверием.
Тем не менее, я могу заставить процесс работать на моем компьютере с помощью SSMS, а также могу продублировать описанную вами ошибку.
Чтобы заставить это работать должным образом, я создал sproc в базе данных master, назначил сочетание клавиш и перезапустил SSMS. Затем я ввел имя базы данных.schema_name.table_name в одинарных кавычках, за которым следует запятая, а затем целочисленное значение (sproc, который я тестировал, был примером GetRows в статье). Я все еще был подключен к основной базе данных.
Это сработало без происшествий.
Чтобы получить ту же ошибку, о которой вы упомянули, я удалил ссылку на имя схемы или имя базы данных и получил ту же ошибку, что и вы.
Возможно, вам нужно добавить имя базы данных и имя схемы перед именем таблицы?
Предложение Тима не решило мою проблему на моем компьютере для разработки, но убедило меня попробовать еще раз с другого компьютера. Когда я использую SSMS другого ПК для входа в базу данных ПК разработки и пытаюсь в точности то, что описывает Тим, у меня наблюдается то же поведение, которое описывает Тим.
Я также смог повторить проблему синтаксического анализа аргументов на других компьютерах, которые я пробовал в прошлом. Я надеюсь, что Тим может сообщить мне, какая версия и номер сборки в его установке SSMS, потому что моя текущая теория заключается в том, что проблема связана только с конкретной сборкой, которая есть у моих коллег и меня на наших ПК разработчиков - строка версии «Microsoft SQL Server Management Studio 9.00.1399.00». Все наши установки этой версии произошли более года назад, поэтому я не знаю, могу ли я отследить, с какого она диска.
Тот, у которого НЕ возникает проблемы, на самом деле является наш сервер разработки, на котором установлена «Microsoft SQL Server Management Studio 9.00.3042.00». Я не знаю, может ли это быть чем-то, что я могу убрать, исправив или что-то в этом роде, но в настоящее время похоже, что 1399 считывает весь выбор как один аргумент, а 3042 выполняет некоторый предварительный анализ. Я также недавно обнаружил, что когда я передаю строку, содержащую «-» (токен комментария) в 3042, все после «-» игнорируется, в то время как в 1399 все это включается в первый аргумент.
Я также использую SSMS версии 9.00.3042.00, что, вероятно, объясняет, почему она работает на моем компьютере.
Согласен с Тимом. Я только что обновился до SQL Server 05 sp2 и подтверждаю, что эта ошибка исправлена.
Можете ли вы проверить, какая у вас точная версия / сборка SSMS? Это не решает проблему с моим основным компьютером, но после вашего комментария я смог воспроизвести ваши результаты, используя другой компьютер с другим номером сборки. Я исследую больше прямо сейчас; опубликую полные результаты в редактировании моего вопроса.