Исправить обработку аргументов в пользовательских сочетаниях клавиш ускорителя SQL Server 2005 Mgmt Studio? - PullRequest
0 голосов
/ 17 сентября 2008

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

Например, набрав в SSMS следующее,

Person,4

затем, выбрав его и запустив ярлык, я получаю сообщение об ошибке «Неверное имя объекта« Персона, 4 ».

Кто-нибудь знает, как это исправить? Кто-нибудь вообще использует эти ярлыки? Я гуглил эту проблему несколько раз за последние два года, и мне не повезло.

Редактировать: Может быть проблема с конкретной сборкой SSMS. У меня есть пост ниже.

Ответы [ 4 ]

1 голос
/ 17 сентября 2008

Я никогда не пробовал этого, пока не прочитал ваш вопрос, а затем не прочитал статью, на которую вы ссылались, так что принимайте это с крошкой соли.

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

Чтобы заставить это работать должным образом, я создал sproc в базе данных master, назначил сочетание клавиш и перезапустил SSMS. Затем я набрал databasename.schema_name.table_name в одинарных кавычках, за которыми следуют запятая, а затем целочисленное значение (проверенный мной sproc был примером GetRows в статье). Я все еще был подключен к основной базе данных.

Это сработало без инцидентов.

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

Возможно, вам нужно добавить имя базы данных и имя схемы перед именем таблицы?

0 голосов
/ 18 декабря 2008

Согласен с Тимом. Я только что обновился до SQL Server 05 sp2 и подтверждаю, что эта ошибка исправлена.

0 голосов
/ 18 сентября 2008

Я также использую SSMS версии 9.00.3042.00, что, вероятно, объясняет, почему она работает на моей машине.

0 голосов
/ 17 сентября 2008

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

Мне также удалось повторить проблему разбора аргументов на других компьютерах, которые я пробовал в прошлом. Я надеюсь, что Тим может сообщить мне, какая версия и номер сборки у него установлены SSMS, потому что моя текущая теория заключается в том, что проблема заключается только в конкретной сборке, которую мои коллеги и я имеем на наших компьютерах разработчиков - строка версии "Microsoft SQL Server Management Studio 9.00.1399.00". Все наши установки этой версии произошли более года назад, поэтому я не знаю, могу ли я отследить, с какого диска она.

Тот, у которого НЕ возникает проблема, на самом деле является нашим сервером разработки, на котором установлена ​​«Microsoft SQL Server Management Studio 9.00.3042.00». Я не знаю, может ли это быть чем-то, что я могу сделать, пропатчив или что-то в этом роде, но в настоящее время похоже, что 1399 читает весь выбор как один аргумент, а 3042 выполняет предварительный анализ. Я также недавно обнаружил, что когда я передаю строку, содержащую «-» (маркер комментария) в 3042 году, все, что после «-», игнорируется, а в 1399 году все это включается в первый аргумент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...