Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблема с кодировкой xp_cmdshell  [new]
dkfancska
Member

Откуда:
Сообщений: 2
DECLARE @path NVARCHAR(255)='D:\MSSQL\Printcon\'
DECLARE @pn NVARCHAR(255), @rn NVARCHAR(255), @f NVARCHAR(512)
SELECT @pn='"'+ connection + '"'FROM printer WHERE id=@PrinterId
SELECT @rn='"'+ [file] + '"'FROM report  WHERE id=@ReportId
SET @f='cmd.exe /c  '+@path+'printcon.exe ' + @rn + ' ' + @pn + ' "'+ REPLACE(@params,';','" "') + '" '
PRINT @f
EXEC xp_cmdshell @f, no_output


В бд существует процедура печати, но проблемы с кодировакой. Если руками выполнить что формирует процедура, то все ок. Из студии кракозябры
2 июн 17, 15:21    [20535206]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой xp_cmdshell  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
А мсье (или мадам) знают толк в извращениях.
2 июн 17, 15:27    [20535241]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой xp_cmdshell  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
CHCP
Lynn
It sounds like you're using a different "codepage" value as the default on your Operating System than on SQL Server. You may need to either permanently or tempoarily change the one for your command shell... the setting in SQL Server is probably correct for handling the extended characters. At a Command Shell prompt type in this command:

CHCP

With no arguments it will report the codepage being used. The default for the United States is 437. The default for Europe is 850, I believe. Given the same hex value (in the upper half of the ASCII range, they will produce different character representations. That is what you're experiencing. You will need to research your SQL Server settings to see what value you need to make your Command Shell use.

Take a look at the builtin function if SQl Server 2000 named "fn_helpcollations()" to find out what collations/codepages you're using for your data (it can be different on different columns, so you might want to first look at the schema for the table holding this data).

You should be able to insert an additional line in the script being executed by xp_cmdshell to remporarily override the codepage for the shell. i.e.

set @cmd = 'chcp nnnn & echo ' + @bAddress1 + '>>' + @filename

where nnnn represents the codepage value you need.

HTH,
Lynn
2 июн 17, 15:31    [20535269]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой xp_cmdshell  [new]
dkfancska
Member

Откуда:
Сообщений: 2
Руслан Дамирович,

не помогло
5 июн 17, 09:32    [20539131]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой xp_cmdshell  [new]
aleks2
Guest
dkfancska

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


Руками - это хорошо.

НО!
Из под какой учетки?
5 июн 17, 09:35    [20539141]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить