Основываясь на рекомендации, данные в другом месте (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;
Не могли бы вы объяснить, что вы имеете в виду? Где настройка, которую вы изменили? – CowboyBebop
попробовал это, без радости – Roger