Studio управления SQL Server – подсказки для улучшения TSQL, кодирующего процесс

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

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

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
42
задан 7 revs, 4 users 62% 12 March 2012 в 19:02
поделиться

23 ответа

Ответ Wiki, находящийся в собственности сообщества - не стесняется редактировать или добавлять комментарии:

Горячие клавиши

  • F5 , CTRL + E или ALT + X - выполняются, в настоящее время выбираемый код TSQL
  • CTRL + R †“показывают/скрывают, что Область
  • Результатов CTRL + N †“Открывает, New Query Window
  • CTRL + L †“Отображают план

выполнения запросов, Редактируя Ярлыки

  • CTRL + K + C и CTRL + K + U - комментарий/некомментарий, выбранный блок кода (предложенный Ненарезанным)
  • CTRL + SHIFT + U и CTRL + SHIFT + L - изменяет выделенный текст на ВЕРХНИЙ / нижний регистр
  • SHIFT + ALT +, Выбор текста - выбирает/сокращает/копирует/вставляет прямоугольный блок текста

Дополнения

Другие Подсказки

  • Используя стиль префикса запятой (предложенный Заправкой для соуса Бочонка)
  • Используя сочетания клавиш (предложенный kcrumley)

Полезные ссылки

24
ответ дан 13 revs, 7 users 72% 26 November 2019 в 23:16
поделиться

Смотрите на Подсказка SQL Красного Логического элемента - это - большой продукт (как большинство вкладов Красного Логического элемента)

, SQL Сообщает , также большой свободный инструмент (онлайн) для форматирования длинных процедур, которые могут иногда выходить из-под контроля.

Кроме этого, я учился на болезненном опыте, это - хорошая вещь к , предшествуют любому DELETE оператор с BEGIN TRANSACTION. Как только Вы уверены, что Ваш оператор удаляет только, что он должен, Вы можете тогда COMMIT.

Сохраненный меня в ряде случаев;-)

27
ответ дан 3 revs 26 November 2019 в 23:16
поделиться

Используйте функциональность ПОПЫТКИ/ВЫГОДЫ для с обнаружением ошибки.

Опытное Программирование SQL Server Adam Machanic 2005 года является большим ресурсом для твердых методов и методов.

цепочка принадлежности Использования для сохраненного procs.

Используют схемы для осуществления безопасности данных и ролей.

1
ответ дан Jeremiah Peschka 26 November 2019 в 23:16
поделиться

Отобразитесь Разработчик Запроса с CTRL + SHIFT + Q

2
ответ дан 3 revs, 3 users 60% 26 November 2019 в 23:16
поделиться

Я предлагаю, чтобы Вы создали стандарты для своих сценариев SQL и придерживались их. Также используйте шаблоны для быстрого создания различных типов хранимых процедур и функций. Вот вопрос о шаблонах в управлении Studio

SQL Server 2005 года, Как Вы создаете шаблоны хранимой процедуры SQL Server 2005 в Studio управления SQL Server 2005 года?

2
ответ дан 2 revs 26 November 2019 в 23:16
поделиться

Другой вещью, которая помогает улучшить точность того, что я делаю, не является действительно студийная подсказка по управлению, но одно использование t-sql само.

Каждый раз, когда я пишу обновление или оператор удаления впервые, я включаю выбор в него так, чтобы я видел, какие записи будут затронуты.

Примеры:

select t1.field1,t2.field2
--update t
--set field1 = t2.field2 
from  mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 >10

select t1.* 
--delete t1
from mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 = 'test'

(отмечают, что я использовал выбор * здесь только для иллюстрации, я буду обычно только выбирать несколько полей, я должен видеть, что запрос корректен. Иногда я, возможно, должен был бы видеть поля от других таблиц inthe соединение, а также записи, которые я планирую удалить, чтобы удостовериться, что соединение проложило себе путь, я думал, что это будет)

при выполнении этого кода Вы выполняете выбор сначала, чтобы гарантировать, что это корректно, затем прокомментируйте, что выбор намечает и не комментирует удаление или обновляет части. Путем выполнения его этот путь Вы случайно не выполняете удаление или обновление перед проверкой его. Также Вы избегаете проблемы упущения прокомментировать выбор, заставляющий обновление обновить все записи в таблице базы данных, которая может произойти, если Вы используете этот синтаксис и не комментируете выбор для выполнения его:

select t1.field1,t2.field2
update t
set field1 = t2.field2 
--select t1.field1,t2.field2
from  mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 >10

, Как Вы видите от примера выше, если Вы не комментируете выбор и забываете повторно комментировать его, ой Вы просто обновили целую таблицу и затем выполнили выбор, когда Вы думали, чтобы просто выполнить обновление. Кто-то просто сделал это в моем офисе на этой неделе, делая его так только одним человеком всех, что клиенты могли войти в клиентские веб-сайты. Поэтому постарайтесь не делать это.

4
ответ дан 2 revs, 2 users 76% 26 November 2019 в 23:16
поделиться

Для Запросов Sub

обозреватель объектов> щелкает правой кнопкой по таблице> таблица Script как> ВЫБОР к> Буфер обмена

Тогда, можно просто вставить в разделе, где Вы хотите это как запрос sub.

Шаблоны / Отрывки

Создают Вас собственные шаблоны только с фрагментом кода. Тогда вместо этого открытие шаблона как новый документ просто перетаскивает его Вам текущий запрос для вставки отрывка.

отрывок А может просто быть рядом заголовка с комментариями или просто некоторой простой частью кода.

Неявные транзакции

, Если Вы привычка не забываете запускать транзакцию перед Вашим удалять statemens, можно перейти к опциям и установить неявные транзакции по умолчанию во всех запросах. Они всегда требуют явной фиксации / откат.

Уровень изоляции

Переходит к опциям и установил уровень изоляции на READ_UNCOMMITED по умолчанию. Таким образом, Вы не должны вводить NOLOCK во всех своих специальных запросах. Просто не забывайте помещать подсказку таблицы при записи нового представления или хранимой процедуры.

база данных Default

Вашему входу в систему установил базу данных по умолчанию DBA (Мне, обычно нежелательный почти каждый раз).

, Если Вы хотите, чтобы он был различным из-за проекта, Вы в настоящее время продолжаете работать.

В 'Зарегистрированной области Servers'> Щелчок правой кнопкой> вкладка свойств Properties> Connection> соединяются с базой данных.

Несколько логинов

(Они Вы, возможно, уже сделали хотя)

Регистр сервер многократно, каждый с различным входом в систему. У Вас может тогда быть тот же сервер в обозревателе объектов, открытом многократно (каждый с различным входом в систему).

Для выполнения того же запроса Вы уже записали с различным входом в систему, вместо того, чтобы копировать запрос просто делают щелчок правой кнопкой по области запроса> Соединение> соединение Изменения.

4
ответ дан Ricardo C 26 November 2019 в 23:16
поделиться

Сочетания клавиш. Как только Вы выясняете, какие виды запросов Вы пишете много, запишите служебные хранимые процедуры, чтобы автоматизировать задачи и отобразить их на сочетания клавиш. Например, эта статья говорит о том, как постараться не вводить "избранные лучшие 10 * от SomeBigTable", каждый раз Вы хотите просто получить беглый взгляд на демонстрационные данные из той таблицы. У меня есть значительно расширенная версия этой процедуры, отображенной на CTRL + 5 .
еще много я имею:

  1. CTRL + 0 : Быстро напишите сценарий данных таблицы, или proc, UDF или определения представления
  2. CTRL + 9 : найдите любой объект, имя которого содержит данную строку (для того, когда Вы знаете Вас существует процедура с "Опцией" на имя, но Вы не знаете то, что его имя запускает с)
  3. CTRL + 7 : найдите любой proc, UDF или представление, которое включает данную строку в ее код
  4. CTRL + 4 : найдите все таблицы, которые имеют столбец с именем

... и еще много, которые не приходят на ум прямо сейчас. Некоторые из этих вещей могут быть сделаны через существующие интерфейсы в SSMS, но окна и виджеты SSMS могут быть, немного замедляют загрузку, особенно когда Вы запрашиваете против сервера через Интернет, и я предпочитаю не иметь необходимость взять руки от клавиатуры так или иначе.

5
ответ дан 2 revs, 2 users 80% 26 November 2019 в 23:16
поделиться

Мне нравится устанавливать сочетание клавиш CTRL + F1 как sp_helptext, поскольку это позволяет Вам выделять хранимую процедуру, и быстро смотреть на он - код. Я нахожу, что это - хорошее дополнение к значению по умолчанию ALT + ярлык F1 sp_help .

3
ответ дан 3 revs, 2 users 75% 26 November 2019 в 23:16
поделиться

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

Стараются избегать серверных курсоров как можно больше. Всегда придерживайтесь 'основанного на наборе подхода' вместо 'процедурного подхода' для доступа и управления данными. Курсоров можно часто избегать при помощи операторов SELECT вместо этого.

Всегда используют графический план выполнения в Query Analyzer или SHOWPLAN_TEXT или командах SHOWPLAN_ALL для анализа запросов. Удостоверьтесь, что Ваши запросы делают "Индекс ищет" вместо "Индексного сканирования" или "Сканирования таблицы". Сканирование таблицы или индексное сканирование являются очень плохой вещью и должны избежаться, если это возможно. Выберите правильные индексы на правых столбцах. Используйте более читаемые Стандартные ANSI пункты Соединения вместо старых соединений стиля. С соединениями ANSI оператор Where используется только для фильтрации данных. Где как с более старыми соединениями стиля, оператор Where обрабатывает и условие объединения и данные фильтрации.

не позволяют Вашим приложениям фронтенда запрашивать/управлять данные непосредственно с помощью ВЫБОРА или ВСТАВЛЯТЬ/ОБНОВЛЯТЬ/ОПЕРАТОРЫ УДАЛЕНИЯ. Вместо этого создайте хранимые процедуры и позвольте своим приложениям получить доступ к этим хранимым процедурам. Это содержит доступ к данным в чистоте и последовательный через все модули Вашего приложения, и в то же время централизуя бизнес-логику в базе данных.

Разговор о Хранимых процедурах, не снабжайте префиксом свои названия хранимой процедуры "SP _". Префикс sp_ резервируется для системной хранимой процедуры та поставка с SQL Server. Каждый раз, когда SQL Server встречается с именем процедуры, запускающимся с SP _, это сначала пытается определить местоположение процедуры в основной базе данных, тогда это ищет любые спецификаторы (база данных, владелец), если, тогда это пробует dbo как владельца. Таким образом, можно действительно сэкономить время в определении местоположения хранимой процедуры путем предотвращения "SP _" префикс.

Избегают динамических SQL-операторов как можно больше. Динамический SQL имеет тенденцию быть медленнее, чем статический SQL, поскольку SQL Server должен генерировать план выполнения каждый раз во времени выполнения.

, Когда будет возможно, попытайтесь использовать интегрированную аутентификацию. Это означает, забудьте о sa и пользователях SQL других, используйте пользователя Microsoft, настраивающего инфраструктуру, и всегда сохраняйте свой SQL-сервер, актуальный со всеми требуемыми исправлениями. Microsoft делает хорошую разработку задания, тестирование и выпуск патчей, но это - Ваше задание для применения его.

Поиск в книгах amazon.com с хорошими обзорами об этом и покупают его!

8
ответ дан VP. 26 November 2019 в 23:16
поделиться

Выделение объекта в запросе и нажатии ALT + F1 выполнит sp_help для него, давая Вам поломку любых столбцов, индексов, параметры и т.д.

13
ответ дан 2 revs, 2 users 67% 26 November 2019 в 23:16
поделиться

Моя любимая быстрая подсказка - то, что, когда Вы расширяетесь, имя таблицы в обозревателе объектов, просто перетащив слово colums на экран запроса поместит список всех столбцов в таблице в запрос. Намного легче просто удалить тех Вы не хотите, чем ввести тех, Вы действительно хотите, и это настолько легко, это препятствует тому, чтобы люди использовали действительно ужасный выбор * синтаксис. И это предотвращает опечатки. Конечно, можно индивидуально перетащить столбцы также.

13
ответ дан HLGEM 26 November 2019 в 23:16
поделиться

+1 для Подсказки SQL.

Что-то реальное, простое, что я предполагаю, что никогда не видел - который будет работать с примерно ЛЮБОЙ средой SQL (и другие языки даже):

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

SELECT
t.a
,t.b
,t.c
,t.d
FROM t

Это делает действительно легким отредактировать списки выборки, списки параметров, порядок списками, группу списками, и т.д. Я нахожу, что провожу намного меньше времени, играя с добавлением и удалением запятых от конца списков после операций вырезания и вклейки - я предполагаю, что это удается легче, потому что Вы почти всегда добавляете вещи в конце, и с постфиксными запятыми, который требует, чтобы Вы переместили курсор больше.

Попытка это, Вы будете удивлены - я знаю, что был.

19
ответ дан Cade Roux 26 November 2019 в 23:16
поделиться

Просто крошечный - прямоугольные выделения ALT + DRAG очень удобны для копирования + вставки вертикально выровненных списков столбцов (например, при ручной записи массовое ОБНОВЛЕНИЕ). Написание TSQL - единственный раз, когда я его использую!

5
ответ дан 26 November 2019 в 23:16
поделиться

У меня есть запланированная задача, которая каждую ночь записывает каждый объект (таблицу, sproc и т. Д.) В файл. У меня в выходном каталоге установлена ​​индексация полнотекстового поиска, поэтому, когда я ищу определенную строку (например, константу), которая находится где-то в БД, я могу очень быстро ее найти.

В Management Studio вы можете использовать команду «Задачи»> «Создать сценарии ...», чтобы узнать, как это сделать.

3
ответ дан 26 November 2019 в 23:16
поделиться

CTRL + I для инкрементного поиска . Нажмите F3 или CTRL + I , чтобы просмотреть результаты.

6
ответ дан 26 November 2019 в 23:16
поделиться

Я тепло рекомендую Подсказку SQL Красного Логического элемента. Автоматическое обнаружение (intellisense на таблицах, хранимых процедурах, функциях и собственных функциях) является не чем иным как потрясающий!:)

Это идет с ценой все же. Нет никакой бесплатной версии вещи.

0
ответ дан cllpse 26 November 2019 в 23:16
поделиться

F5 для выполнения текущего запроса является легкой победой, после этого, универсальный редактор Миссисипи команды CTRL + K + C , чтобы прокомментировать выделенный текст и затем CTRL + K + U , чтобы не прокомментировать.

1
ответ дан 2 revs, 2 users 67% 26 November 2019 в 23:16
поделиться

Используйте подробности обозревателя объектов вместо обозревателя объектов для просмотра таблиц, таким образом вы можете нажать букву, и она перейдет к первой таблице с этим буквенным префиксом.

1
ответ дан 26 November 2019 в 23:16
поделиться

Если вы работаете с разработчиками, часто получаете кусок кода, отформатированный как одну длинную строку кода, тогда надстройка принтера sql pretty для SQL Server Management Studio может значительно помочь с большим количеством более 60 вариантов форматирования. http://www.dpriver.com/sqlpp/ssmsaddin.html

1
ответ дан 26 November 2019 в 23:16
поделиться

Use a SELECT INTO query to quickly/easily make backup tables to work and experiment with.

0
ответ дан 26 November 2019 в 23:16
поделиться

Зная о двух (?) Разных типах окон, доступных в SQL Server Management Studio.

Если вы щелкните правой кнопкой мыши таблицу и выберите Открыть , она откроется. используйте редактируемую сетку, в которой вы можете изменять ячейки. Если вы щелкните правой кнопкой мыши базу данных и выберите Новый запрос , он создаст окно немного другого типа, в котором вы не можете изменить сетку, но оно дает у вас есть несколько других приятных функций, таких как разрешение различных фрагментов кода и возможность выполнять их по отдельности путем выбора.

0
ответ дан 26 November 2019 в 23:16
поделиться

Использование TAB для выделенного текста приведет к его отступу. Удобно для легкого преобразования вашего кода в читаемый формат. Кроме того, SHIFT + TAB будет отменен.

1
ответ дан 26 November 2019 в 23:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: