Невозможно установить целевую версию сервера на SQL Server 2012 для проекта служб Integration Services

Операторы if и while и оператор ? используют значения истинности для определения, какую ветвь кода запускать. Например, номера нулей и NaN и пустая строка являются ложными, но другие числа и строки являются истинными. Объекты истинны, но неопределенное значение и null являются ложными.

Оператор двойного отрицания !! вычисляет значение истины значения. На самом деле это два оператора, где !!x означает !(!x) и ведет себя следующим образом:

  • Если x является ложным значением, !x является true и !!x false.
  • Если x является истинным значением, !x является false, а !!x - true.

Когда используется на верхнем уровне булевого контекста (if, while или ?), оператор !! поведенчески не работает. Например, if (x) и if (!!x) означают одно и то же.

Практическое использование

Однако оно имеет несколько практических применений.

Одно использование - сжимайте объект до его значения истинности, чтобы ваш код не содержал ссылку на большой объект и поддерживал его. Присвоение переменной !!some_big_object вместо some_big_object позволяет перейти к сборщику мусора. Это полезно для случаев, которые создают либо объект, либо ложное значение, такое как null или неопределенное значение, такое как обнаружение функции браузера.

Другое использование, о котором я упомянул в ответе о Соответствующий оператор !! C - с инструментами «lint», которые ищут общие опечатки и диагностику печати. Например, как в C, так и в JavaScript несколько общих опечаток для булевых операций производят другие поведения, выход которых не совсем как Boolean:

  • if (a = b) - это назначение, за которым следует использование значения истины из b; if (a == b) - сравнение сравнений.
  • if (a & b) является поразрядным И; if (a && b) является логическим И. 2 & 5 - 0 (ложное значение); 2 && 5 истинно.

Оператор !! заверяет инструмент lint, что то, что вы написали, означает то, что вы имели в виду: выполните эту операцию, затем возьмите истинное значение результата.

Третье использование заключается в создании логического XOR и логического XNOR. Как в C, так и в JavaScript a && b выполняет логическое И (истинно, если обе стороны истинны), а a & b выполняет побитовое И. a || b выполняет логическое ИЛИ (истинно, если хотя бы одно верно), а a | b выполняет побитовое ИЛИ. Существует побитовое XOR (исключающее ИЛИ) как a ^ b, но нет встроенного оператора для логического XOR (true, если только одна сторона является истиной). Например, вы можете разрешить пользователю вводить текст только в одном из двух полей. Что вы можете сделать, так это преобразовать их в значение истины и сравнить их: !!x !== !!y.

4
задан Dale Burrell 22 February 2019 в 20:51
поделиться

2 ответа

Последняя версия SSDT - 15.9, возможно, обновление разрешится? Однако поддержка SQL Server 2012 была временно удалена в версии 15,8.

0
ответ дан TomNash 22 February 2019 в 20:51
поделиться

Это версия Visual Studio, которую вы используете. Чтобы получить правильную версию SSDT, вам нужно перейти в раздел «О программе» или «Установка и удаление программ» и получить ее для SSDT.

В любом случае, проблема в том, что Microsoft удалила Targeting to SQL Server 2012 в SSDT версии 15.8.1 и впоследствии повторно добавила его в SSDT версии 15.9.0 (то есть самое последнее на момент публикации).

Просто обновите SSDT, и он у вас будет.

Примечание: Удалите SSRS и SSAS, если они установлены, в противном случае обновление SSDT завершится неудачно, и у вас будет много изжоги, когда он будет снова установлен.

журнал изменений предназначен для инструментов данных SQL Server (SSDT) ​​

0
ответ дан J Weezy 22 February 2019 в 20:51
поделиться
Другие вопросы по тегам:

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