SQL Server ed ALM su database


Il blog di Alessandro Alpi
Archivio Posts
Anno 2018

Anno 2017

Anno 2016

Anno 2015

Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

sp_refreshview e viste rinominate/spostate

Quest'oggi ho dovuto fare refresh dei metadati di una vista, e ho lanciato la stored procedure di sistema sp_refreshview.

Creiamo l'ambiente di test:

USE tempdb;

GO

 

CREATE SCHEMA SchemaSource;

GO

CREATE SCHEMA SchemaDestination;

GO



Abbiamo creato due schema, uno chiamato SchemaSource ed uno chiamato SchemaDestination.
A questo punto, creiamo una vista sotto lo SchemaSource:

CREATE VIEW SchemaSource.View_1 AS SELECT 1 AS Val, 'A' AS String;

GO



Lo script seguente, aggiorna i metadati della vista indicata sopra:

EXEC sp_refreshview 'SchemaSource.View_1'

GO



Nessun problema, il comando è eseguito correttamente. Ma proviamo a fare una transfer della view dallo SchemaSource allo SchemaDestination:

ALTER SCHEMA SchemaDestination TRANSFER SchemaSource.View_1;

GO


Proviamo ora a fare refresh dei metadati della vista "spostata":

EXEC sp_refreshview 'SchemaDestination.View_1'

GO


Ecco il messaggio che riceverete:

Msg 208, Level 16, State 6, Procedure sp_refreshsqlmodule_internal, Line 75

Invalid object name 'SchemaSource.View_1'.



Sembra che nella sp_refreshsqlmodule_internal vi siano problemi di gestione dell'oggetto. E' come se la vista fosse ancora collegata allo schema di partenza.
Un ticket aperto a MS ci chiarisce un po' il problema..

Come si nota, il problema c'è anche se si prova a rinominare una vista tramite designer o sp_rename.

In SQL Server 2008 questo errore è risolvibile facendo un'ALTER della vista:

ALTER VIEW SchemaDestination.View_1 AS SELECT 1 AS Val, 'A' AS String;

GO


Dopo questa operazione, la refresh funziona senza problemi.

In SQL Server 2012, il problema è definitivamente fixato.

per i riferimenti: sp_refreshview

Stay tuned! 

Categoria: SQL Server 2008
venerdì, 05 ott 2012 Ore. 11.27

Messaggi collegati


Statistiche
  • Views Home Page: 481.051
  • Views Posts: 866.853
  • Views Gallerie: 498.936
  • n° Posts: 484
  • n° Commenti: 273



















Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003