SqlCacheDependency 생성자
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
SqlCacheDependency 클래스의 새 인스턴스를 초기화합니다.
오버로드
SqlCacheDependency(SqlCommand) |
캐시 키 종속성을 만드는 제공된 SqlCacheDependency를 사용하여 SqlCommand 클래스의 새 인스턴스를 초기화합니다. |
SqlCacheDependency(String, String) |
캐시 키 종속성을 만드는 제공된 매개 변수를 사용하여 SqlCacheDependency 클래스의 새 인스턴스를 초기화합니다. |
SqlCacheDependency(SqlCommand)
캐시 키 종속성을 만드는 제공된 SqlCacheDependency를 사용하여 SqlCommand 클래스의 새 인스턴스를 초기화합니다.
public:
SqlCacheDependency(System::Data::SqlClient::SqlCommand ^ sqlCmd);
public SqlCacheDependency (System.Data.SqlClient.SqlCommand sqlCmd);
new System.Web.Caching.SqlCacheDependency : System.Data.SqlClient.SqlCommand -> System.Web.Caching.SqlCacheDependency
Public Sub New (sqlCmd As SqlCommand)
매개 변수
- sqlCmd
- SqlCommand
SqlCommand 개체를 만드는 데 사용되는 SqlCacheDependency입니다.
예외
sqlCmd
매개 변수가 null
인 경우
SqlCommand instance 속성 NotificationAutoEnlist 이 로 true
설정되고 페이지에 특성이 @ OutputCache
로 설정된 지시문이 SqlDependency
있습니다CommandNotification
.
설명
이 생성자는 SQL Server 2005 제품의 쿼리 알림 기능을 사용하는 개체를 만드는 SqlCacheDependency 데 사용됩니다.
매개 변수와 sqlCmd
연결된 SQL 문에는 다음이 포함되어야 합니다.
테이블 소유자의 이름을 포함하여 정규화된 테이블 이름입니다. 예를 들어 데이터베이스 소유자가 소유한 Customers라는 테이블을 참조하려면 SQL 문이 를 참조
dbo.customers
해야 합니다.Select 문의 명시적 열 이름입니다. 별표(*) 와일드카드 문자를 사용하여 테이블에서 모든 열을 선택할 수는 없습니다. 예를 들어 대신
select * from dbo.customers
를 사용해야select name, address, city, state from dbo.customers
합니다.
이 생성자는 SQL Server 2005 쿼리 알림을 페이지 수준 출력 캐싱과 SqlCacheDependency 사용하여 페이지의 instance instance 연결하는 SqlCommand 데 사용할 수 없습니다.
추가 정보
적용 대상
SqlCacheDependency(String, String)
캐시 키 종속성을 만드는 제공된 매개 변수를 사용하여 SqlCacheDependency 클래스의 새 인스턴스를 초기화합니다.
public:
SqlCacheDependency(System::String ^ databaseEntryName, System::String ^ tableName);
public SqlCacheDependency (string databaseEntryName, string tableName);
new System.Web.Caching.SqlCacheDependency : string * string -> System.Web.Caching.SqlCacheDependency
Public Sub New (databaseEntryName As String, tableName As String)
매개 변수
- databaseEntryName
- String
애플리케이션 Web.config 파일의 요소에 정의된 데이터베이스 이름입니다.
- tableName
- String
SqlCacheDependency와 관련된 데이터베이스 테이블 이름입니다.
예외
SqlClientPermission에 대한 내부 확인이 실패한 경우
또는
databaseEntryName
이 테이블 기반 알림에 대해 구성된 데이터베이스 목록에 없는 경우
또는
SqlCacheDependency 개체를 초기화하는 동안 데이터베이스에 연결할 수 없는 경우
또는
SqlCacheDependency 개체를 지원하는 데이터베이스 또는 데이터베이스 저장 프로시저에서 SqlCacheDependency 개체에 권한 거부 오류가 발생한 경우
tableName
매개 변수가 Empty인 경우
SqlCacheDependency에 폴링이 활성화되지 않은 경우
또는
폴링 간격이 올바르게 구성되지 않은 경우
또는
애플리케이션 구성 파일에 연결 문자열이 지정되지 않은 경우
또는
애플리케이션 구성 파일에 지정된 연결 문자열을 찾을 수 없는 경우
또는
애플리케이션 구성 파일에 지정된 연결 문자열이 빈 문자열인 경우
databaseEntryName
매개 변수에 지정된 데이터베이스의 변경 알림이 활성화되지 않은 경우
tableName
매개 변수에 지정된 데이터베이스 테이블의 변경 알림이 활성화되지 않은 경우
예제
다음 코드 예제에서는 이 생성자를 사용하여 Northwind라는 SQL Server 데이터베이스에서 Categories라는 데이터베이스 테이블과 연결된 클래스의 SqlCacheDependency instance 만듭니다.
public void Page_Load(object Src, EventArgs E)
{
// Declare the SqlCacheDependency instance, SqlDep.
SqlCacheDependency SqlDep = null;
// Check the Cache for the SqlSource key.
// If it isn't there, create it with a dependency
// on a SQL Server table using the SqlCacheDependency class.
if (Cache["SqlSource"] == null) {
// Because of possible exceptions thrown when this
// code runs, use Try...Catch...Finally syntax.
try {
// Instantiate SqlDep using the SqlCacheDependency constructor.
SqlDep = new SqlCacheDependency("Northwind", "Categories");
}
// Handle the DatabaseNotEnabledForNotificationException with
// a call to the SqlCacheDependencyAdmin.EnableNotifications method.
catch (DatabaseNotEnabledForNotificationException exDBDis) {
try {
SqlCacheDependencyAdmin.EnableNotifications("Northwind");
}
// If the database does not have permissions set for creating tables,
// the UnauthorizedAccessException is thrown. Handle it by redirecting
// to an error page.
catch (UnauthorizedAccessException exPerm) {
Response.Redirect(".\\ErrorPage.htm");
}
}
// Handle the TableNotEnabledForNotificationException with
// a call to the SqlCacheDependencyAdmin.EnableTableForNotifications method.
catch (TableNotEnabledForNotificationException exTabDis) {
try {
SqlCacheDependencyAdmin.EnableTableForNotifications("Northwind", "Categories");
}
// If a SqlException is thrown, redirect to an error page.
catch (SqlException exc) {
Response.Redirect(".\\ErrorPage.htm");
}
}
// If all the other code is successful, add MySource to the Cache
// with a dependency on SqlDep. If the Categories table changes,
// MySource will be removed from the Cache. Then generate a message
// that the data is newly created and added to the cache.
finally {
Cache.Insert("SqlSource", Source1, SqlDep);
CacheMsg.Text = "The data object was created explicitly.";
}
}
else {
CacheMsg.Text = "The data was retrieved from the Cache.";
}
}
Sub Page_Load(Src As Object, E As EventArgs)
' Declare the SqlCacheDependency instance, SqlDep.
Dim SqlDep As SqlCacheDependency
' Check the Cache for the SqlSource key.
' If it isn't there, create it with a dependency
' on a SQL Server table using the SqlCacheDependency class.
If Cache("SqlSource") Is Nothing
' Because of possible exceptions thrown when this
' code runs, use Try...Catch...Finally syntax.
Try
' Instantiate SqlDep using the SqlCacheDependency constructor.
SqlDep = New SqlCacheDependency("Northwind", "Categories")
' Handle the DatabaseNotEnabledForNotificationException with
' a call to the SqlCacheDependencyAdmin.EnableNotifications method.
Catch exDBDis As DatabaseNotEnabledForNotificationException
Try
SqlCacheDependencyAdmin.EnableNotifications("Northwind")
' If the database does not have permissions set for creating tables,
' the UnauthorizedAccessException is thrown. Handle it by redirecting
' to an error page.
Catch exPerm As UnauthorizedAccessException
Response.Redirect(".\ErrorPage.htm")
End Try
' Handle the TableNotEnabledForNotificationException with
' a call to the SqlCacheDependencyAdmin.EnableTableForNotifications method.
Catch exTabDis As TableNotEnabledForNotificationException
Try
SqlCacheDependencyAdmin.EnableTableForNotifications( _
"Northwind", "Categories")
' If a SqlException is thrown, redirect to an error page.
Catch exc As SqlException
Response.Redirect(".\ErrorPage.htm")
End Try
' If all the other code is successful, add MySource to the Cache
' with a dependency on SqlDep. If the Categories table changes,
' MySource will be removed from the Cache. Then generate a message
' that the data is newly created and added to the cache.
Finally
Cache.Insert("SqlSource", Source1, SqlDep)
CacheMsg.Text = "The data object was created explicitly."
End Try
Else
CacheMsg.Text = "The data was retrieved from the Cache."
End If
End Sub
설명
이 생성자는 SQL Server 7.0 및 SQL Server 2000 제품에 대한 개체를 만드는 SqlCacheDependency 데 사용됩니다.
데이터베이스 이름에 전달 된 database
매개 변수는 애플리케이션의 Web.config 파일에 정의 되어야 합니다. 예를 들어 다음 Web.config 파일은 변경 알림에 대한 pubs라는 데이터베이스를 SqlCacheDependency 정의합니다.
<configuration>
<connectionStrings>
<add name="Pubs" connectionString="Data Source=(local); Initial Catalog=pubs; Integrated Security=true"; providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<caching>
<sqlCacheDependency enabled = "true" pollTime = "60000" >
<databases>
<add name="pubs"
connectionStringName="pubs"
pollTime="9000000"
/>
</databases>
</sqlCacheDependency>
</caching>
</system.web>
</configuration>
이 생성자를 사용할 때 일반적으로 throw되는 두 가지 예외는 DatabaseNotEnabledForNotificationException 및 TableNotEnabledForNotificationException입니다. 이 DatabaseNotEnabledForNotificationException throw되면 예외 처리 코드에서 메서드를 호출 SqlCacheDependencyAdmin.EnableNotifications 하거나 명령줄 도구를 사용하여 aspnet_regsql.exe
알림에 대한 데이터베이스를 설정할 수 있습니다. 이 TableNotEnabledForNotificationException throw되면 메서드를 SqlCacheDependencyAdmin.EnableTableForNotifications 호출하거나 를 사용하여 aspnet_regsql.exe
알림을 위한 테이블을 설정할 수 있습니다.
추가 정보
적용 대상
.NET