2014-01-31 4 views
5

Я недавно был SSMS 2008 повторно установлена ​​на моем ноутбукеСтандарт.кодировка в среде SQL Server Management Студия

Когда я нажимаю «New Query ..», я теперь предложено выбрать кодировку файла, что-то я никогда не было предложено сделать перед

Я связана SQL Побейте «SQL Query Editor с кодировкой» в разделе текстового редактора опциона и перезапустить SSMS

Что я могу сделать, чтобы связать с кодировкой, как я не» t хочу выбирать каждый раз, когда я делаю новый запрос или открываю существующий файл sql

ответ

1

Я такой идиот - я изменил ассоциацию на «SQL Query Editor», и теперь все работает нормально

Бит «с кодировкой» должен действительно оттолкнуть меня!

+2

Не могли бы вы объяснить, что вы имеете в виду? Где настройка, которую вы изменили? – CowboyBebop

+0

попробовал это, без радости – Roger

6

В соответствии с обходным решением, опубликованным Fakher Halim на Microsoft Connect.

У меня была та же проблема. Git не показал различий в истории (кроме «Двоичные файлы a/x.sql и b/x.sql отличаются). Поэтому я нажал Инструменты => Параметры => Окружения => Международные настройки. Изменен Язык из «английский» на «То же, что Microsoft Windows» Теперь GIT DIFF прекрасно работает -.! отчеты разница версия обычно

+2

Для меня это не имело значения. – Liam

+0

Стоит отметить, что я использую английскую английскую Windows и поэтому «английский» в SQL Server - это другой язык. –

2

Основываясь на рекомендации, данные в другом месте (https://connect.microsoft.com/SQLServer/feedback/details/288677/unicode-defaults-on-ssms-save) Я изрубил в «командный сценарий» чтобы попытаться «изменить кодировку по умолчанию» на UTF-8 с помощью спецификации. Скрипт работает, написав шаблон UTF-8 w/BOM в файле SQLFile.sql в дереве файлов программ SQL Server. Он работал один раз на моя машина, но это не означает, что она без ошибок или на 100% безопасна. ИСПОЛЬЗОВАНИЕ В OW N РИСК!

Согласно ответу «Microsoft» в этой теме:

по умолчанию как файлы сохраняются определяется тем, как главный SQLFile.sql файл шаблона находится в C: \ Program Files \ Microsoft SQL Server \ 90 \ Tools \ Binn \ VSShell \ Common7 \ IDE \ sqlworkbenchprojectitems \ Sql. Если вы сохраните этот файл с использованием кодировки ANSI, последующие новые сеансы запросов будут использовать эту кодировку.

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

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

Чтобы запустить сценарий для реального, передайте первый аргумент «force». Это опасная часть. Соблюдайте осторожность. Чтобы запустить сценарий до завершения без паузы для ввода пользователем, передайте второй аргумент «dontpause» (это может быть передано с пустым первым аргументом, чтобы пропустить паузу во время сухого хода).

Я выбираю UTF-8, потому что он совместим с 7-разрядным ASCII, он поддерживает подавляющее большинство языков и символов, которые вам когда-либо понадобятся сценарию, он очень эффективно хранит западный текст и исходный код, а также является источником контроля/текста патч дружественный Шаблон в нижней части скрипта содержит знак байта (BOM) для обозначения редакторов, что это не ISO-8859-1 или некоторая другая несовместимая 8-битная кодировка по умолчанию. Убедитесь, что он не потерян при копировании/вставке. Сохраните фактический пакетный скрипт как ASCII (или совместимый, без спецификации!). Командный процессор дросселирует в спецификации UTF-8.

@echo off 
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION || exit /b 1 

if "x%1" == "xforce" (
    echo Force enable. Danger Will Robinson! This means that I'm going to 
    echo attempt to move files and write a new file to replace them. This 
    echo is potentially destructive if there are any bugs in this script. 
    echo In particular, if there are any unrelated files with the name 
    echo sqlfile.sql under your Program Files directories then they'll be 
    echo corrupted. 
    echo. 
    echo This script is going to require elevated privileges to write to 
    echo Program Files. Execute the Command Prompt application as an 
    echo administrator to proceed ^(should be harmless to try without 
    echo elevation first^). 
    echo. 
    echo I RECOMMEND YOU _DO NOT_ RUN THIS SCRIPT FROM WINDOWS EXPLORER 
    echo BECAUSE YOU MAY HAVE A HARDER TIME READING THE OUTPUT. Start a 
    echo Command Prompt and run it there. 
    echo. 

    if not "x%2" == "xdontpause" (
     echo Now is a good time to Ctrl+C ^(and Y^). 
     pause 
    ) 
) else (
    echo Dry-run enabled. Pass a lone argument of "force" to go for real. 1>&2 
    echo Be careful running the script several times. Your template backup 
    echo will be overwritten and lost. 
) 

set paths="C:\Program Files (x86)\SQLFile.sql" "C:\Program Files\SQLFile.sql" 

for /f "tokens=*" %%f in ('dir /a /b /s %paths% 2^>NUL') do @(
    echo. 
    echo Found: %%f 

    if "x%1" == "xforce" (
     echo Moving to: %%f.orig 
     echo. 
     echo If you ^(or anything else^) has made any changes to your template 
     echo then you should be able to recover your template from the backup 
     echo file above ^(not yet, once you continue^) ^(alternatively, 
     echo recover the template from the source file now^). 

     if not "x%2" == "xdontpause" (
      pause 
     ) 

     move "%%f" "%%f.orig" || exit /b 1 
    ) 

    echo. 
    echo Writing a standard UTF-8 template with byte-order mark ^(BOM^). 
    echo Feel free to open this file up afterward and manually set the 
    echo encoding preferred. You can also replace it with your own 
    echo template text. 

    if not "x%2" == "xdontpause" (
     pause 
    ) 

    set ok=0 

    rem Read in myself, look for the __BEGIN__ marker and write 
    rem subsequent lines to the file. 
    for /f "tokens=*" %%g in (%~dpf0) do @(
     if !ok! == 1 (
      if "x%1" == "xforce" (
       if "x%%g" == "x." (
        echo. 
        echo.>>"%%f"|| exit /b 1 
       ) else (
        echo %%g 
        echo %%g>>"%%f"|| exit /b 1 
       ) 
      ) 
     ) else (
      if "%%g" == "__BEGIN__" (
       echo. 
       echo Found marker. Starting write on next ^(non-empty^) line... 1>&2 
       echo. 
       set ok=1 
      ) 
     ) 
    ) 
) 

exit /b 0 

Below is the SQL template. Lines containing only a dot (.) represent 
blank lines. Actual blank lines will be lost. 

__BEGIN__ 
BEGIN TRANSACTION; 
. 
SET XACT_ABORT ON; 
. 
. 
. 
ROLLBACK; 
--COMMIT; 
1

В SQL Server Management Studio, выберите Сервис/Параметры, затем разверните "Текстовый редактор" и добавить расширение "SQL" и отобразить его на "SQL Query Editor".

решение работает, если вы работаете с ASCII-символов. Если sql содержит символы, которым требуется явное кодирование (как определено редактором SQL), вы должны выбрать кодировку. Проблема возникает при создании файлов как в редакторе SQL, так и в другом редакторе (NotePad ++), а затем редактировании этих файлов в другом редакторе. NotePad ++ сохраняет файлы без заголовка и может угадать кодировку. Редактор SQL, с другой стороны, всегда требует заголовок кодировки, когда используются определенные символы.

+0

Что, почему? Как это помогает? – Liam

+0

OP Mike ответил на свой вопрос. Это показывает, где можно найти вариант Майка. – LeeLep

+0

Решение работает, если вы работаете с символами ASCII. Если sql содержит символы, которым требуется явное кодирование (как определено редактором SQL), вы должны выбрать кодировку. Проблема возникает при создании файлов как в редакторе SQL, так и в другом редакторе (NotePad ++), а затем редактировании этих файлов в другом редакторе. NotePad ++ сохраняет файлы без заголовка и может угадать кодировку. Редактор SQL, с другой стороны, всегда требует заголовок кодировки, когда используются определенные символы. – LeeLep

2

Предыдущие ответы предложили использовать Инструменты → Опции → Окружающая среда → Международные настройки, но эта опция отсутствует в SSMS 17.2.

Вместо этого вы можете перейти в Файл → Сохранить как ..., нажмите стрелку на «Сохранить» и выберите «Сохранить с кодировкой».

Смежные вопросы