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

Откуда: Где где .. в караганде
Сообщений: 538
Добрый день!


Делаю такой запрос:

SELECT *
FROM OPENROWSET('SQLNCLI', 'TESTSERVER'; 'usertest';'passtest',
     'Execute DBtest.dbo.procedureTest 7') 


Но возвращаются кракозяблы..
Подскажите как их победить?

Заранее благодарю.
23 апр 15, 13:18    [17553792]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Смотрите настройки линкед сервера связанные с collation
23 апр 15, 13:52    [17553984]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
Glory
Member

Откуда:
Сообщений: 104760
mr.dfox
Но возвращаются кракозяблы..

А при прямом коннекте к TESTSERVER из студии они не возвращаются ?
23 апр 15, 13:53    [17553991]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
mr.dfox
Member

Откуда: Где где .. в караганде
Сообщений: 538
Glory,

При прямом коннекте - все читабельно. )
23 апр 15, 13:58    [17554026]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
Glory
Member

Откуда:
Сообщений: 104760
mr.dfox
При прямом коннекте - все читабельно. )

А вы коннект это делаете с консоли сервера ?
23 апр 15, 13:59    [17554029]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
mr.dfox
Member

Откуда: Где где .. в караганде
Сообщений: 538
Glory,

С консоли - это имеется виду непосредственно на самом сервере?
Коннект делаю со своей рабочей станции..
23 апр 15, 14:03    [17554057]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
Glory
Member

Откуда:
Сообщений: 104760
mr.dfox
С консоли - это имеется виду непосредственно на самом сервере?

Разумеется. Ведь этот код будет выполнять сервер
23 апр 15, 14:04    [17554064]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
mr.dfox
Member

Откуда: Где где .. в караганде
Сообщений: 538
Коннекчусь на сервер, и выполняю этот запрос.

Причем это обращение на этот же сервер.
23 апр 15, 14:07    [17554081]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
mr.dfox
Member

Откуда: Где где .. в караганде
Сообщений: 538
Если делаю просто exec то все отображается, но через OPENROWSET русские символы - крякозяблы..
23 апр 15, 14:08    [17554093]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
mr.dfox
Member

Откуда: Где где .. в караганде
Сообщений: 538
mr.dfox,

Только не спрашивайте к чему такие извращения ))
23 апр 15, 14:09    [17554097]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
o-o
Guest
подтверждаю.
почему так, сейчас подумаю,
пока что могу сказать,
у меня оба сервера с латинским коллэйшеном,
а процедура сделана в базе с кириллическим и сама колонка там varchar(100).
было уже что-то такое, не могу вспомнить название темы

К сообщению приложен файл. Размер - 40Kb
23 апр 15, 14:55    [17554409]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Вопрос на засыпку - какой collation должен брать openrowset внутри себя?
23 апр 15, 15:01    [17554458]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
o-o
Guest


К сообщению приложен файл. Размер - 46Kb
23 апр 15, 15:06    [17554503]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Как я и предполагал, он берет collation источника, что и видно в запросе.
23 апр 15, 15:10    [17554531]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
invm
Member

Откуда: Москва
Сообщений: 9402
https://technet.microsoft.com/en-us/library/ms191145(v=sql.105).aspx
Using the linked server options is the only way to enable using remote collations. Therefore, queries that are constructed that use ad hoc names provided by OPENROWSET and OPENDATASOURCE cannot use the collation information of remote character data.
23 апр 15, 16:22    [17555002]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
mr.dfox
Member

Откуда: Где где .. в караганде
Сообщений: 538
Да у меня COLLATION сервера: SQL_Latin1_General_CP1_CI_AS
а БД: Cyrillic_General_CI_AS

Возвращает в SQL_Latin1_General_CP1_CI_AS, а как ее все таки победить?


Пробовал:

SELECT v1 [b]Collate Cyrillic_General_CI_AS [/b]
FROM OPENROWSET('SQLNCLI', 'TESTSERVER'; 'usertest';'passtest',
     'Execute DBtest.dbo.procedureTest 7') 
     


Безрезультатно..

По поводу use remote collation = false - у меня нет линка на этот сервер.
24 апр 15, 05:09    [17556896]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
o-o
Guest
mr.dfox
как ее все таки победить?

вы прочли то, что процитировал invm?
вы (т.е. сервер, на к-ом выполнятся ) никак не получите инфо о коллэйшене вовращаемого через OPENROWSET.
поэтому получить кириллицу можно только выполняя OPENROWSET на сервере с кириллическим коллэйшеном.
меняйте код, преобразуйте возвращаемое к юникоду.
т.е. в моем случае или переписать запрос:
SELECT *
FROM OPENROWSET('SQLNCLI', 'sisto_2008'; 'usr';'pwd','select cast (col as nvarchar) as col from cyr.dbo.t')

или переписать процедуру:
alter proc [dbo].[sp_read_cyr]
as
select cast (col as nvarchar) as col
from dbo.t

ну или радикально поменяйте тип столбца в исходной таблице на nvarchar
24 апр 15, 10:29    [17557564]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с кодировкой при запуске процедуры через OPENROWSET  [new]
mr.dfox
Member

Откуда: Где где .. в караганде
Сообщений: 538
o-o,

Извиняюсь, читал не внимательно...

Хех, процедуру менять не могу, да и таблицу тоже (..
Но в принципе задача сама по себе вроде стала неактуальной.

Всем спасибо.
24 апр 15, 13:11    [17558616]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить