2016-04-29 9 views
1

Ich weiß, dass der SQL-Server nicht die Schemaänderung der zugrunde liegenden Tabelle auswählen. zum Beispiel, wenn wir folgendes ausführen,automatisch wählen Schemaänderung der zugrunde liegenden Tabelle für Ansicht

CREATE TABLE tbl (id INT) 

CREATE VIEW viewa 
AS 
SELECT * 
FROM tbl 

ALTER TABLE tbl ADD NAME INT 

und eine auf Ansicht wählen Sie ausführen, wird nur ID-Spalte

SELECT * 
FROM viewa 

Gibt es eine Eigenschaft zurückgegeben ich kann, mit dem festgelegt die SQL-Engine das Schema autopicks ändert

Antwort

2

Verwendung sp_refreshview hierfür

exec sp_refreshview N'dbo.viewa' 
+0

"dbo.tbl" ist Tabellenname. Sie sollten den Namen der Ansicht anstelle des Tabellennamens –

+0

thankx @AksheyBhat, geändert angeben. –

+0

Danke Abdul. Aber gibt es irgendeine Eigenschaft auf Serverebene, die wir einstellen können, um diese automatisch auszuwählen, selbst wenn wir vergessen, den proc auszuführen? etwas wie ich erstellte Ansicht mit Select * from tbl. Auch wenn ich keine Procs ausführen kann, muss ich alle Spalten sehen, indem ich eine Eigenschaft wie 'set nocount ON' usw. setze. – sree

0

Sie können v erstellen iew mit "SCHEMABINDING" -Option. Auf diese Weise kann die Basistabellendefinition nicht auf eine Weise geändert werden, die sich auf die Ansichtsdefinition auswirken könnte.

CREATE VIEW viewa 
AS 
SELECT * 
FROM tbl SCHEMABINDING 
+0

Danke Akshey. Aber die Anforderung ist, dass ich die Tabelle aktualisieren kann, aber alle abhängigen mit Select * sollten automatisch neue Spalten auswählen – sree

1

Es gibt keine Out-of-the-Box-Funktionalität dafür. Aber du könntest deine eigenen rollen. Die system tables detailliert alle Spalten, die derzeit jeder Ansicht und Tabelle zugeordnet sind.

Sie müssten eine Steuertabelle erstellen, die Ihre Tabellen Ansichten zuordnet. Sie müssen den Prozess auch planen.

Verwandte Themen