SqlCacheDependencyAdmin Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Esegue attività amministrative richieste su un database SQL Server per supportare la classe SqlCacheDependency quando si utilizzano dipendenze basate sul polling. La classe non può essere ereditata.
public ref class SqlCacheDependencyAdmin abstract sealed
public static class SqlCacheDependencyAdmin
type SqlCacheDependencyAdmin = class
Public Class SqlCacheDependencyAdmin
- Ereditarietà
-
SqlCacheDependencyAdmin
Esempio
L'esempio di codice seguente è una semplice pagina di ASP.NET per abilitare e disabilitare le notifiche di modifica nelle tabelle di database di SQL Server. Usa l'oggetto SqlCacheDependencyAdmin per gestire le notifiche di modifica nel database specificato in una stringa di connessione denominata MyConnectionString
. L'esempio include due file, un file .aspx che definisce l'interfaccia utente e un file code-behind contenente il codice sorgente per gli eventi ASP.NET.
Il primo esempio è il file .aspx che definisce l'interfaccia utente.
Importante
L'esempio include una casella di testo che accetta l'input dell'utente e rappresenta quindi una potenziale minaccia alla sicurezza. Per impostazione predefinita, le pagine Web ASP.NET verificano che l'input dell'utente non includa script o elementi HTML. Per altre informazioni, vedere Cenni preliminari sugli attacchi tramite script.
<%@ 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>
Il secondo esempio è il file code-behind contenente il codice sorgente per gli eventi della pagina.
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
Commenti
È possibile usare i metodi di questa classe per abilitare e disabilitare a livello di codice un database di SQL Server e le relative tabelle per SqlCacheDependency le notifiche di modifica degli oggetti. Questa classe ottiene inoltre informazioni sulle tabelle in un database abilitate per le notifiche di modifica usando il GetTablesEnabledForNotifications metodo . È tuttavia possibile usare lo strumento da riga di comando Aspnet_regsql per gestire le notifiche delle modifiche per un database di SQL Server e le relative tabelle.
Nota
Per chiamare uno dei metodi in questa classe, l'account usato per accedere al database di SQL Server deve disporre delle autorizzazioni per creare tabelle e stored procedure. Per abilitare le notifiche in una tabella specifica, è necessario disporre delle autorizzazioni per creare un trigger di SQL Server in tale tabella. Per altre informazioni su come impostare le autorizzazioni in un database, vedere la documentazione di SQL Server. Per altre informazioni sull'account usato dal processo di ASP.NET, vedere ASP.NET Rappresentazione.
Metodi
DisableNotifications(String) |
Disabilita le notifiche di modifica della classe SqlCacheDependency per il database specificato. |
DisableTableForNotifications(String, String) |
Disabilita le notifiche di modifica della classe SqlCacheDependency su una tabella di database SQL Server. |
DisableTableForNotifications(String, String[]) |
Disabilita le notifiche di modifica della classe SqlCacheDependency su una matrice delle tabelle di database SQL Server. |
EnableNotifications(String) |
Attiva le notifiche di modifica della classe SqlCacheDependency nel database specificato. |
EnableTableForNotifications(String, String) |
Connette al database SQL Server specificato e attiva la tabella di database specificata per le notifiche di modifica della classe SqlCacheDependency. |
EnableTableForNotifications(String, String[]) |
Connette al database SQL Server specificato e attiva la matrice delle tabelle di database specificata per la notifica di modifica della classe SqlCacheDependency. |
GetTablesEnabledForNotifications(String) |
Recupera una matrice di stringhe contenente il nome di tutte le tabelle che viene attivata per le notifiche di modifica in un database SQL Server. |