SqlCacheDependencyAdmin Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Végrehajtja a lekérdezésalapú függőségek használatakor az SqlCacheDependency osztály támogatásához szükséges felügyeleti feladatokat egy SQL Server-adatbázisban. Ez az osztály nem örökölhető.
public ref class SqlCacheDependencyAdmin abstract sealed
public static class SqlCacheDependencyAdmin
type SqlCacheDependencyAdmin = class
Public Class SqlCacheDependencyAdmin
- Öröklődés
-
SqlCacheDependencyAdmin
Példák
Az alábbi példakód egy egyszerű ASP.NET lap, amellyel engedélyezheti és letilthatja a változásértesítéseket SQL Server adatbázistáblákon. A SqlCacheDependencyAdmin objektummal kezeli a változásértesítéseket a kapcsolati karakterlánc nevű MyConnectionString. A példa két fájlt tartalmaz, egy .aspx fájlt, amely meghatározza a felhasználói felületet, valamint egy kód mögötti fájlt, amely a ASP.NET események forráskódját tartalmazza.
Az első minta a felhasználói felületet meghatározó .aspx fájl.
Important
Ebben a példában egy szövegdoboz található, amely elfogadja a felhasználói bemenetet, ami potenciális biztonsági fenyegetés. Alapértelmezés szerint ASP.NET weblapok ellenőrzik, hogy a felhasználói bevitel nem tartalmaz-e szkript- vagy HTML-elemeket. További információ: Szkript kihasználása – áttekintés.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="cacheDependencyAdmincs.aspx.cs"
Inherits="cacheDependencyAdmincs" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html" />
<title>Cache Dependency Administration</title>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr>
<td colspan="2">
Database support for change notifications:
</td>
</tr>
<tr>
<td align="center">
<asp:Button ID="enableNotification" runat="server" Text="On" OnClick="enableNotification_Click" />
</td>
<td align="center">
<asp:Button ID="disableNotification" runat="server" Text="Off" OnClick="disableNotification_Click" />
</td>
</tr>
<tr>
<td colspan="2">
<asp:Label ID="enabledTablesMsg" runat="server" Text="Tables enabled for change notification:" />
</td>
</tr>
<tr>
<td colspan="2">
<asp:ListBox ID="enabledTables" runat="server" SelectionMode="multiple" /><br />
<asp:Button ID="disableTable" runat="server" Text="Disable selected table(s)" OnClick="disableTable_Click" />
</td>
</tr>
<tr>
<td colspan="2">
<asp:Label ID="tableEnableMsg" runat="server" Text="Enable change notification on table:" />
</td>
</tr>
<tr>
<td colspan="2">
<asp:TextBox ID="tableName" runat="server" /><br />
<asp:Button ID="enableTable" runat="server" Text="Enable table(s)" OnClick="enableTable_Click" />
<asp:Label id="enableTableErrorMsg" runat="server" Visible="false" />
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ Page Language="VB" CodeFile="cacheDependencyAdminvb.aspx.vb"
Inherits="cacheDependencyAdminvb"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<meta http-equiv="Content-Type" content="text/html" />
<title>Cache Dependency Administration</title>
</head>
<body>
<form id="form1" runat="server">
<table>
<tr>
<td colspan="2">
Database support for change notifications:
</td>
</tr>
<tr>
<td align="center">
<asp:Button ID="enableNotification" runat="server" Text="On" OnClick="enableNotification_Click" />
</td>
<td align="center">
<asp:Button ID="disableNotification" runat="server" Text="Off" OnClick="disableNotification_Click" />
</td>
</tr>
<tr>
<td colspan="2">
<asp:Label ID="enabledTablesMsg" runat="server" Text="Tables enabled for change notification:" />
</td>
</tr>
<tr>
<td colspan="2">
<asp:ListBox ID="enabledTables" runat="server" SelectionMode="multiple" /><br />
<asp:Button ID="disableTable" runat="server" Text="Disable selected table(s)" OnClick="disableTable_Click" />
</td>
</tr>
<tr>
<td colspan="2">
<asp:Label ID="tableEnableMsg" runat="server" Text="Enable change notification on table:" />
</td>
</tr>
<tr>
<td colspan="2">
<asp:TextBox ID="tableName" runat="server" /><br />
<asp:Button ID="enableTable" runat="server" Text="Enable table(s)" OnClick="enableTable_Click" />
<asp:Label id="enableTableErrorMsg" runat="server" Visible="false" />
</td>
</tr>
</table>
</form>
</body>
</html>
A második minta a lapesemények forráskódját tartalmazó kód mögötti fájl.
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.Caching;
public partial class cacheDependencyAdmincs : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Put page in default state.
enabledTables.Visible = true;
disableTable.Visible = true;
enabledTablesMsg.Text = "Tables enabled for change notification:";
tableName.Visible = true;
enableTable.Visible = true;
tableEnableMsg.Text = "Enable change notification on table(s):";
enableTableErrorMsg.Visible = false;
}
protected void Page_PreRender(object sender, EventArgs e)
{
try
{
string[] enabledTablesList =
SqlCacheDependencyAdmin.GetTablesEnabledForNotifications(
ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
if (enabledTablesList.Length > 0)
{
enabledTables.DataSource = enabledTablesList;
enabledTables.DataBind();
}
else
{
enabledTablesMsg.Text = "No tables are enabled for change notifications.";
enabledTables.Visible = false;
disableTable.Visible = false;
}
}
catch (DatabaseNotEnabledForNotificationException ex)
{
enabledTables.Visible = false;
disableTable.Visible = false;
enabledTablesMsg.Text = "Cache notifications are not enabled in this database.";
tableName.Visible = false;
enableTable.Visible = false;
tableEnableMsg.Text = "Must enable database for notifications before enabling tables";
}
}
protected void enableNotification_Click(object sender, EventArgs e)
{
SqlCacheDependencyAdmin.EnableNotifications(
ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
}
protected void disableNotification_Click(object sender, EventArgs e)
{
SqlCacheDependencyAdmin.DisableNotifications(
ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
}
protected void disableTable_Click(object sender, EventArgs e)
{
foreach (ListItem item in enabledTables.Items)
{
if (item.Selected)
{
SqlCacheDependencyAdmin.DisableTableForNotifications(
ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString,
item.Text);
}
}
}
protected void enableTable_Click(object sender, EventArgs e)
{
try
{
if (tableName.Text.Contains(";"))
{
string[] tables = tableName.Text.Split(new Char[] { ';' });
for (int i = 0; i < tables.Length; i++)
tables[i] = tables[i].Trim();
SqlCacheDependencyAdmin.EnableTableForNotifications(
ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString,
tables);
}
else
{
SqlCacheDependencyAdmin.EnableTableForNotifications(
ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString,
tableName.Text);
}
}
catch (HttpException ex)
{
enableTableErrorMsg.Text = "<br />" +
"An error occurred enabling a table.<br />" +
"The error message was: " +
ex.Message;
enableTableErrorMsg.Visible = true;
}
}
}
Partial Class cacheDependencyAdminvb
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
'Put the page into a default state.
enabledTables.Visible = True
disableTable.Visible = True
enabledTablesMsg.Text = "Tables enabled for change notification:"
tableName.Visible = True
enableTable.Visible = True
tableEnableMsg.Text = "Enable change notification on table(s):"
enableTableErrorMsg.Text = ""
End Sub
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs)
Try
Dim enabledTablesList As String()
enabledTablesList = SqlCacheDependencyAdmin.GetTablesEnabledForNotifications( _
ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString)
If enabledTablesList.Length > 0 Then
enabledTables.DataSource = enabledTablesList
enabledTables.DataBind()
Else
enabledTablesMsg.Text = "No tables are enabled for change notifications."
enabledTables.Visible = False
disableTable.Visible = False
End If
Catch ex As DatabaseNotEnabledForNotificationException
enabledTables.Visible = False
disableTable.Visible = False
enabledTablesMsg.Text = "Cache notifications are not enabled in this database."
tableName.Visible = False
enableTable.Visible = False
tableEnableMsg.Text = "Must enable database for notifications before enabling tables."
End Try
End Sub
Protected Sub enableNotification_Click(ByVal sender As Object, ByVal e As System.EventArgs)
SqlCacheDependencyAdmin.EnableNotifications( _
ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString)
End Sub
Protected Sub disableNotification_Click(ByVal sender As Object, ByVal e As System.EventArgs)
SqlCacheDependencyAdmin.DisableNotifications( _
ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString)
End Sub
Protected Sub disableTable_Click(ByVal sender As Object, ByVal e As System.EventArgs)
For Each item As ListItem In enabledTables.Items
If item.Selected Then
SqlCacheDependencyAdmin.DisableTableForNotifications( _
ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString, _
item.Text)
End If
Next
End Sub
Protected Sub enableTable_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Try
If tableName.Text.Contains(";") Then
Dim tables As String()
tables = tableName.Text.Split(New [Char]() {";"c})
For i As Integer = 0 To tables.Length - 1
tables(i) = tables(i).Trim
Next
SqlCacheDependencyAdmin.EnableTableForNotifications( _
ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString, _
tables)
Else
SqlCacheDependencyAdmin.EnableTableForNotifications( _
ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString, _
tableName.Text)
End If
Catch ex As HttpException
enableTableErrorMsg.Text = "<br />" & _
"An error occurred enabling a table.<br />" & _
"The error message was: " & _
ex.Message
enableTableErrorMsg.Visible = True
End Try
End Sub
End Class
Megjegyzések
Az osztály módszereivel programozott módon engedélyezheti és letilthatja a SQL Server adatbázist és a táblákat SqlCacheDependency objektummódosítási értesítésekhez. Ezen kívül ez az osztály információkat szerez be arról, hogy az adatbázis mely táblái engedélyezve vannak a módosítási értesítésekhez a GetTablesEnabledForNotifications metódus használatával. A Aspnet_regsql parancssori eszközzel azonban kezelheti az SQL Server adatbázis és a táblák változásértesítéseit.
Note
Az osztály bármelyik metódusának meghívásához a SQL Server adatbázis eléréséhez használt fióknak rendelkeznie kell táblák és tárolt eljárások létrehozásához szükséges engedélyekkel. Ha engedélyezni szeretné az értesítéseket egy adott táblán, rendelkeznie kell engedéllyel ahhoz, hogy SQL Server eseményindítót hozzon létre a táblában. Az adatbázisok engedélyeinek beállításáról további információt a SQL Server dokumentációjában talál. A ASP.NET folyamat által használt fiókkal kapcsolatos további információkért lásd: ASP.NET Megszemélyesítés.
Metódusok
| Name | Description |
|---|---|
| DisableNotifications(String) |
Letiltja SqlCacheDependency a megadott adatbázis változásértesítéseit. |
| DisableTableForNotifications(String, String) |
Letiltja SqlCacheDependency változásértesítéseket egy SQL Server adatbázistáblán. |
| DisableTableForNotifications(String, String[]) |
Letiltja SqlCacheDependency változásértesítéseket SQL Server adatbázistáblák tömbjén. |
| EnableNotifications(String) |
Engedélyezi SqlCacheDependency a változásértesítéseket a megadott adatbázisban. |
| EnableTableForNotifications(String, String) |
Csatlakozik a megadott SQL Server adatbázishoz, és engedélyezi a megadott adatbázistáblát SqlCacheDependency változásértesítésekhez. |
| EnableTableForNotifications(String, String[]) |
A megadott SQL Server adatbázishoz csatlakozik, és engedélyezi az adatbázistáblák megadott tömbjének használatát SqlCacheDependency változásértesítéshez. |
| GetTablesEnabledForNotifications(String) |
Egy sztringtömböt kér le, amely tartalmazza az összes olyan tábla nevét, amely engedélyezve van a változásértesítésekhez egy SQL Server adatbázisban. |