Erstellen, Ändern und Entfernen von Sichten
In SQL Server-Verwaltungsobjekten (SMO) werden SQL Server-Sichten durch das View-Objekt dargestellt.
Die TextBody-Eigenschaft des View-Objekts definiert die Sicht. Sie entspricht der SELECT-Anweisung von Transact-SQL zur Erstellung einer Sicht.
Beispiel
Um die bereitgestellten Codebeispiele verwenden zu können, müssen Sie die Programmierumgebung, die Programmiervorlage und die Programmiersprache wählen, in der die Anwendung erstellt werden soll. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen eines Visual Basic-SMO-Projekts in Visual Studio .NET oder Vorgehensweise: Erstellen eines Visual C#-SMO-Projekts in Visual Studio .NET.
Erstellen, Ändern und Entfernen einer Sicht in Visual Basic
In diesem Codebeispiel wird gezeigt, wie eine Sicht von zwei Tabellen mithilfe einer inneren Verknüpfung erstellt wird. Die Sicht wird im Textmodus erstellt, daher muss die TextHeader-Eigenschaft festgelegt werden.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks database.
Dim db As Database
db = srv.Databases("AdventureWorks")
'Define a View object variable by supplying the parent database, view name and schema in the constructor.
Dim myview As View
myview = New View(db, "Test_View", "Sales")
'Set the TextHeader and TextBody property to define the view.
myview.TextHeader = "CREATE VIEW [Sales].[Test_View] AS"
myview.TextBody = "SELECT h.SalesOrderID, d.OrderQty FROM Sales.SalesOrderHeader AS h INNER JOIN Sales.SalesOrderDetail AS d ON h.SalesOrderID = d.SalesOrderID"
'Create the view on the instance of SQL Server.
myview.Create()
'Remove the view.
myview.Drop()
Erstellen, Ändern und Entfernen einer Sicht in Visual C#
In diesem Codebeispiel wird gezeigt, wie mithilfe einer inneren Verknüpfung eine Sicht von zwei Tabellen erstellt wird. Die Sicht wird im Textmodus erstellt, daher muss die TextHeader-Eigenschaft festgelegt werden.
{
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Reference the AdventureWorks database.
Database db;
db = srv.Databases("AdventureWorks");
//Declare a Table object variable and reference the Product table.
Table tb;
tb = db.Tables("Product", "Production");
//Define a Rule object variable by supplying the parent database, name, and schema in the constructor.
//Note that the full namespace must be given for the Rule type to differentiate it from other Rule types.
Microsoft.SqlServer.Management.Smo.Rule ru;
ru = new Rule(db, "TestRule", "Production");
//Set the TextHeader and TextBody properties to define the rule.
ru.TextHeader = "CREATE RULE [Production].[TestRule] AS";
ru.TextBody = "@value BETWEEN GETDATE() AND DATEADD(year,4,GETDATE())";
//Create the rule on the instance of SQL Server.
ru.Create();
//Bind the rule to a column in the Product table by supplying the table, schema, and
//column as arguments in the BindToColumn method.
ru.BindToColumn("Product", "SellEndDate", "Production");
//Unbind from the column before removing the rule from the database.
ru.UnbindFromColumn("Product", "SellEndDate", "Production");
ru.Drop();
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Reference the AdventureWorks database.
Database db;
db = srv.Databases("AdventureWorks");
//Define a View object variable by supplying the parent database, view name and schema in the constructor.
View myview;
myview = new View(db, "Test_View", "Sales");
//Set the TextHeader and TextBody property to define the view.
myview.TextHeader = "CREATE VIEW [Sales].[Test_View] AS";
myview.TextBody = "SELECT h.SalesOrderID, d.OrderQty FROM Sales.SalesOrderHeader AS h INNER JOIN Sales.SalesOrderDetail AS d ON h.SalesOrderID = d.SalesOrderID";
//Create the view on the instance of SQL Server.
myview.Create();
//Remove the view.
myview.Drop();
}