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

Откуда:
Сообщений: 367
Здравствуйте, у меня Аналайзер данные отображает как "?????" .
19 авг 09, 07:32    [7554295]     Ответить | Цитировать Сообщить модератору
 Re: Аналайзер данные отображает как "?????"  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
помогите пожалуйста, почему так отображает
19 авг 09, 07:36    [7554298]     Ответить | Цитировать Сообщить модератору
 Re: Аналайзер данные отображает как "?????"  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Mari-Salt
Здравствуйте, у меня Аналайзер данные отображает как "?????" .



какие данные? где? в меню? в результатх запроса?
19 авг 09, 07:43    [7554303]     Ответить | Цитировать Сообщить модератору
 Re: Аналайзер данные отображает как "?????"  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
В результатах запроса
19 авг 09, 07:45    [7554306]     Ответить | Цитировать Сообщить модератору
 Re: Аналайзер данные отображает как "?????"  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Mari-Salt
В результатах запроса


запрос покажите
19 авг 09, 07:52    [7554311]     Ответить | Цитировать Сообщить модератору
 Re: Аналайзер данные отображает как "?????"  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
короче, есть несколько БД, по структуре одинаковые. Запрос добавляет значение одного поля из одной таблицы FF каждой бд в таблицу TT созданную для собра этих значений В master сервера. Вот там отображае в TT это поле сажается как "???". Но, когда просто через select * from FF то отображает значение правильно. Тип поля в ТТ, FF varchar (100)
19 авг 09, 07:55    [7554318]     Ответить | Цитировать Сообщить модератору
 Re: Аналайзер данные отображает как "?????"  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
declare @nameDB sysname
declare @nameTBL sysname
declare @nameTBL0 sysname
declare @ch char
set @ch=char(39)
declare @oName varchar(100)
declare @stmt varchar(4000)

declare crs CURSOR for
select name from master.dbo.sysdatabases where filename like 'F:\bases%'

open crs
fetch next from crs into @nameDB

if exists(select name from master.dbo.sysobjects where name='S_ALL')
drop table master.dbo.S_ALL
create table master.dbo.S_ALL(nameDB sysname,code int,Name varchar(100))

set @nameTBL0='FF'
while @@fetch_status=0
begin
set @nameTBL=@nameDB+'.dbo.'+@nameTBL0
set @stmt='insert master.dbo.S_ALL select '+ @ch+@nameDB+@ch
set @stmt=@stmt+ ',code,'
set @stmt=@stmt+ 'name'
set @stmt=@stmt+' from '+ @nameTBL
execute(@stmt)
fetch next from crs into @nameDB
end
close crs
deallocate crs

--select distinct name,* from master.dbo.S_ALL order by name
--select Name,master.dbo.S2(Name) from master.dbo.S_ALL
select Name,master.dbo.S2(Name) from master.dbo.S_ALL group by Name

-------- процедура формирования списка через запятую----------------
--create function S2(@name as varchar(50))
GO
alter function S2(@name as varchar(100))
returns varchar(2000)
as
begin
declare @t varchar(2000)
set @t=''
select @t=@t+cast(code as varchar(14))+'('+nameDB+')'+','
from master.dbo.S_ALL where name=@name
return (left(@t,len(@t)-1))
end
19 авг 09, 07:57    [7554322]     Ответить | Цитировать Сообщить модератору
 Re: Аналайзер данные отображает как "?????"  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Mari-Salt
Вот там отображае в TT это поле сажается как "???". Но, когда просто через select * from FF то отображает значение правильно.



ничего не понял, где вопросами, а где нормально отображает?
19 авг 09, 08:07    [7554339]     Ответить | Цитировать Сообщить модератору
 Re: Аналайзер данные отображает как "?????"  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
извиняюсь там TT - это S_ALL
вот здесь, поле Name - отображает как "???"
а когда пропускаю select * from FF у меня отображается нормально.
select Name,master.dbo.S2(Name) from master.dbo.S_ALL group by Name
19 авг 09, 08:11    [7554343]     Ответить | Цитировать Сообщить модератору
 Re: Аналайзер данные отображает как "?????"  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Mari-Salt
извиняюсь там TT - это S_ALL
вот здесь, поле Name - отображает как "???"
а когда пропускаю select * from FF у меня отображается нормально.
select Name,master.dbo.S2(Name) from master.dbo.S_ALL group by Name


опять ничего не понял, но при перекидывании данных с Юникод-символами, чтоб не было проблем используйте тип NVARCHAR, и вставку такого вида:

INSERT INTO MyTable (Val1) SELECT N'Мои кириллические значения'
19 авг 09, 08:16    [7554350]     Ответить | Цитировать Сообщить модератору
 Re: Аналайзер данные отображает как "?????"  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
спасибо за внимание но у меня не получается, надеюсь кто нибудь поможет
19 авг 09, 08:24    [7554360]     Ответить | Цитировать Сообщить модератору
 Re: Аналайзер данные отображает как "?????"  [new]
vino
Member

Откуда:
Сообщений: 1191
Mari-Salt, поддержу мнение Knyazev Alexey о кириллических данных.
Раз уж вы работаете с русскими буковками, делайте все поля и переменные типа nvarchar вместо varchar nchar вместо char, тогда, не вдаваясь в подробности
declare @nameDB sysname
declare @nameTBL sysname
declare @nameTBL0 sysname
declare @ch nchar
set @ch=''''
declare @oName nvarchar(100)
declare @stmt nvarchar(4000)

declare crs CURSOR for
select name from master.dbo.sysdatabases where filename like 'F:\bases%'

open crs
fetch next from crs into @nameDB

if exists(select name from master.dbo.sysobjects where name='S_ALL')
drop table master.dbo.S_ALL
create table master.dbo.S_ALL(nameDB sysname,code int,Name nvarchar(100))

set @nameTBL0='FF'
while @@fetch_status=0
begin
set @nameTBL=@nameDB+'.dbo.'+@nameTBL0
set @stmt='insert master.dbo.S_ALL select '+ @ch+@nameDB+@ch
set @stmt=@stmt+ ',code,'
set @stmt=@stmt+ 'name'
set @stmt=@stmt+' from '+ @nameTBL
execute(@stmt)
fetch next from crs into @nameDB
end
close crs
deallocate crs

--select distinct name,* from master.dbo.S_ALL order by name
--select Name,master.dbo.S2(Name) from master.dbo.S_ALL
select Name,master.dbo.S2(Name) from master.dbo.S_ALL group by Name

-------- процедура формирования списка через запятую----------------
--create function S2(@name as nvarchar(50))
GO
alter function S2(@name as nvarchar(100))
returns nvarchar(2000)
as
begin
declare @t nvarchar(2000)
set @t=''
select @t=@t+cast(code as nvarchar(14))+'('+nameDB+')'+',' 
from master.dbo.S_ALL where name=@name
return (left(@t,len(@t)-1))
end
19 авг 09, 10:49    [7554935]     Ответить | Цитировать Сообщить модератору
 Re: Аналайзер данные отображает как "?????"  [new]
Mari-Salt
Member

Откуда:
Сообщений: 367
спасибо
19 авг 09, 11:01    [7555024]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить