SqlCacheDependencyAdmin Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Melakukan tugas administratif yang diperlukan pada database SQL Server untuk mendukung SqlCacheDependency kelas saat menggunakan dependensi berbasis polling. Kelas ini tidak dapat diwariskan.
public ref class SqlCacheDependencyAdmin abstract sealed
public static class SqlCacheDependencyAdmin
type SqlCacheDependencyAdmin = class
Public Class SqlCacheDependencyAdmin
- Warisan
-
SqlCacheDependencyAdmin
Contoh
Contoh kode berikut adalah halaman ASP.NET sederhana untuk mengaktifkan dan menonaktifkan pemberitahuan perubahan pada tabel database SQL Server. Ini menggunakan SqlCacheDependencyAdmin objek untuk mengelola pemberitahuan perubahan dalam database yang ditentukan dalam string koneksi yang disebut MyConnectionString
. Contohnya mencakup dua file, file .aspx yang menentukan antarmuka pengguna dan file code-behind yang berisi kode sumber untuk peristiwa ASP.NET.
Sampel pertama adalah file .aspx yang menentukan antarmuka pengguna.
Penting
Contoh ini memiliki kotak teks yang menerima input pengguna, yang merupakan potensi ancaman keamanan. Secara default, ASP.NET halaman Web memvalidasi bahwa input pengguna tidak menyertakan elemen skrip atau HTML. Untuk informasi selengkapnya, lihat Gambaran Umum Eksploitasi Skrip.
<%@ 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>
Sampel kedua adalah file code-behind yang berisi kode sumber untuk peristiwa halaman.
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
Keterangan
Anda dapat menggunakan metode kelas ini untuk mengaktifkan dan menonaktifkan database SQL Server secara terprogram dan tabelnya untuk SqlCacheDependency pemberitahuan perubahan objek. Selain itu, kelas ini mendapatkan informasi tentang tabel mana dalam database yang diaktifkan untuk pemberitahuan perubahan menggunakan GetTablesEnabledForNotifications metode . Namun, Anda juga dapat menggunakan alat baris perintah Aspnet_regsql untuk mengelola pemberitahuan perubahan untuk database SQL Server dan tabelnya.
Catatan
Untuk memanggil salah satu metode di kelas ini, akun yang Anda gunakan untuk mengakses database SQL Server harus memiliki izin untuk membuat tabel dan prosedur tersimpan. Untuk mengaktifkan pemberitahuan pada tabel tertentu, Anda harus memiliki izin untuk membuat pemicu SQL Server pada tabel tersebut. Untuk informasi selengkapnya tentang cara mengatur izin pada database, lihat dokumentasi SQL Server. Untuk informasi selengkapnya tentang akun yang digunakan oleh proses ASP.NET, lihat peniruan ASP.NET.
Metode
DisableNotifications(String) |
SqlCacheDependency Menonaktifkan pemberitahuan perubahan untuk database yang ditentukan. |
DisableTableForNotifications(String, String) |
SqlCacheDependency Menonaktifkan pemberitahuan perubahan pada tabel database SQL Server. |
DisableTableForNotifications(String, String[]) |
SqlCacheDependency Menonaktifkan pemberitahuan perubahan pada array tabel database SQL Server. |
EnableNotifications(String) |
SqlCacheDependency Mengaktifkan pemberitahuan perubahan pada database yang ditentukan. |
EnableTableForNotifications(String, String) |
Menyambungkan ke database SQL Server yang ditentukan dan mengaktifkan tabel database yang ditentukan untuk SqlCacheDependency pemberitahuan perubahan. |
EnableTableForNotifications(String, String[]) |
Menyambungkan ke database SQL Server yang ditentukan dan mengaktifkan array tabel database yang ditentukan untuk SqlCacheDependency pemberitahuan perubahan. |
GetTablesEnabledForNotifications(String) |
Mengambil array string yang berisi nama setiap tabel yang diaktifkan untuk pemberitahuan perubahan dalam database SQL Server. |