Estava tentando atualizar as tabelas de sistema e não foi permitido.

Eu precisava de atualizar todos os campos do meu banco de NVARCHAR para
VARCHAR pois tenho um sistema multi banco e no Firibird não há o tipo
NVARCHAR e precisava fazer esta modificação para manter a compatibilidade
dos bancos para não atrapalhar o sistema.

 

O select abaixo me retorna todos os campos do banco com as definições e
tamanho dos campos NVARCHAR.

Abaixo do select tem o update que tentei fazer, que era trocar os NVARCHAR
para VARCHAR setando o tamanho do campo para a metade.

 

select:

 

select

                  'Column_name'                = name,

                  'Type'                       = type_name(user_type_id),

                  'IdType'                     = user_type_id,

                  'Computed'                   = case when
ColumnProperty(object_id, name, 'IsComputed') = 0 then 'no' else 'yes' end,

                  'Length'                     = convert(int, max_length),

                  -- for prec/scale, only show for those types that have
valid precision/scale

                  -- Search for type name + ',', because 'datetime' is
actually a substring of 'datetime2' and 'datetimeoffset'

                  'Prec'                             = case when
charindex(type_name(system_type_id) + ',',
N'tinyint,smallint,decimal,int,real,money,float,numeric,smallmoney,date,time
,datetime2,datetimeoffset,') > 0

                                                           then
convert(char(5),ColumnProperty(object_id, name, 'precision'))

                                                           else '     ' end,

                  'Scale'                            = case when
charindex(type_name(system_type_id) + ',',
N'tinyint,smallint,decimal,int,real,money,float,numeric,smallmoney,date,time
,datetime2,datetimeoffset,') > 0

                                                           then
convert(char(5),OdbcScale(system_type_id,scale))

                                                           else '     ' end,

                  'Nullable'                   = case when is_nullable = 0
then '@no' else 'yes' end,

                  'TrimTrailingBlanks'    = case ColumnProperty(object_id,
name, 'UsesAnsiTrim')

                                                           when 1 then 'no'

                                                           when 0 then 'yes'

                                                           else '(n/a)' end,

                  'FixedLenNullInSource'  = case

                                   when type_name(system_type_id) not in
('varbinary','varchar','binary','char')

                                         then '(n/a)'

                                   when is_nullable = 0 then 'no' else 'yes'
end,

                  'Collation'       = collation_name

            from sys.all_columns 

--where object_id = (select object_id/*, @sysobj_type = type*/ from
sys.all_objects where object_id = object_id('MENU'))

where object_id > 100

and type_name(user_type_id) in ('nvarchar','varchar')

 

 

update:

update sys.all_columns 

set max_length = (max_length/2),

    user_type_id = 167

where user_type_id = 231

and object_id > 100

and type_name(user_type_id) = 'nvarchar'

 

Erro:

Mensagem 259, Nível 16, Estado 1, Linha 1

As atualizações ad hoc em catálogos do sistema não são permitidas.

 

 

Parte superior do formulário

Parte inferior do formulário

Parte superior do formulário

  _____  

Atenciosamente,

 


http://www.vienasistemas.com.br/assinatura.png

         Pedro Henrique Gomes 
 Projetos e Desenvolvimento 

        
 


( 

 MG (37) 3213-4855


* 

  <mailto:[EMAIL PROTECTED]> [EMAIL PROTECTED]


8 

  <http://www.vilesoft.com.br/> www.vilesoft.com.br

        
 

http://www.vienasistemas.com.br/images/bn_franquia_pegn.gif

Parte inferior do formulário

Parte superior do formulário

"O emitente desta mensagem é responsável por seu conteúdo e endereçamento.
Cabe ao destinatário cuidar quanto ao tratamento adequado. Sem a devida
autorização, a divulgação, a reprodução, a distribuição ou qualquer outra
ação em desconformidade com as normas internas da Vilesoft são proibidas e
passíveis de sanção disciplinar, cível e criminal." 

"The sender of this message is responsible for its content and addressing.
The receiver shall take proper care of it. Without due authorization, the
publication, reproduction, distribution or the performance of any other
action not conforming to Vilesoft internal policies and procedures is
forbidden and liable to disciplinary, civil or criminal sanctions." 

" El emisor de este mensaje es responsable por su contenido y
direccionamiento. Cabe al destinatario darle el tratamiento adecuado. Sin la
debida autorización, su divulgación, reproducción, distribución o cualquier
otra acción no conforme a las normas internas de Vilesoft están prohibidas y
serán pasibles de sanción disciplinaria, civil y penal." Parte inferior do
formulário

 

 



[As partes desta mensagem que não continham texto foram removidas]

Responder a