[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

microsoft.public.dotnet.framework.aspnet.caching

ASP.NET caching with SQL Server doesn't work. Help needed.

Toni

8/27/2007 1:36:00 PM

Hello! I'm trying to get caching work with ASP.NET 2.0 and SQL Server
Express Edition 2005, but I have a problem and I can't figure out what I'm
doing wrong.

I have tried to do everything according to the instructions. I have enabled
the database for cache notification by running the aspnet_regsql tool on the
command line like this:
aspnet_regsql -S server -E -d database -et

Then I have run the aspnet_regsql tool to enable each table in the database
for cache notification:
aspnet_regsql -S server -E -d database -et -t tablename

I have added the necessary parts into web.config file, so that it is like
this:

<connectionStrings>
<add name="ConnectionString1" connectionString="Data
Source=servername;Database=databasename;Integrated Security=True"
providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<caching>
<sqlCacheDependency enabled="true" pollTime="2000">
<databases>
<add connectionStringName="ConnectionString1"
name="KJ"/>
</databases>
</sqlCacheDependency>
</caching>

I have added this into global.asax file for the application start event:
System.Data.SqlClient.SqlDependency.Start(ConfigurationManager.ConnectionStrings("ConnectionString1").ToString())

To test caching I wrote this piece of code where I get data from the table
MAAKUNNAT in the
database.
----------
SqlCacheDependencyAdmin.EnableTableForNotifications(ConfigurationManager.ConnectionStrings("ConnectionString1").ToString(),
"MAAKUNNAT")
Dim maakunnatDS As New DataSet

If Cache.Get("maakunnat") Is Nothing Then
Dim myConnection As New
SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString1").ToString())
myConnection.Open()

Dim cmd As New SqlCommand("haemaakunnat", myConnection)
cmd.CommandType = CommandType.StoredProcedure
Dim riippuvuus As New SqlCacheDependency("KJ", "MAAKUNNAT")
Dim aggDep As New AggregateCacheDependency
aggDep.Add(riippuvuus)

Dim maakunnatDA As SqlDataAdapter = New SqlDataAdapter
maakunnatDA.SelectCommand = cmd

maakunnatDA.Fill(maakunnatDS, "MAAKUNTA")
myConnection.Close()
Cache.Insert("maakunnat", maakunnatDS, aggDep)

Else
Response.Write("The data is in the cache")
maakunnatDS = Cache.Get("maakunnat")
End If
-----------------
But when I run the page I get this error.
------------------------------------------

The 'MAAKUNNAT' table in the database 'KJ' is not enabled for SQL cache
notification.

Please make sure the table exists, and the table name used for cache
dependency matches exactly the table name used in cache notification
registration.

To enable a table for SQL cache notification, please use
SqlCacheDependencyAdmin.EnableTableForNotifications method, or the command
line tool aspnet_regsql. To use the tool, please run 'aspnet_regsql.exe -?'
for more information.

To get a list of enabled tables in the database, please use
SqlCacheDependencyManager.GetTablesEnabledForNotifications method, or the
command line tool aspnet_regsql.exe.
----------------------------------------------
When I run the aspnet_regsql tool with the -lt parameter to get a list of
enabled tables in the database they are all enabled. I have searched many
pages in the internet and I cannot find out what I'm still doing wrong. I'd
appreciate it very much if someone could help me with this problem.

Toni S.


1 Answer

Teemu Keiski

9/1/2007 5:02:00 PM

0

Hello,

have you enabled service broker in your database?

ALTER DATABASE yourdbname SET ENABLE_BROKER;

Jep, elikkä service broker pitää olla myös päällä. Oletuksena se ei ole.


--
Teemu Keiski
AspInsider, ASP.NET MVP
http://blogs.aspadvice....
http://teemu...




"Toni" <nobody@hotmail555.com> wrote in message
news:elv6o8K6HHA.980@TK2MSFTNGP06.phx.gbl...
> Hello! I'm trying to get caching work with ASP.NET 2.0 and SQL Server
> Express Edition 2005, but I have a problem and I can't figure out what I'm
> doing wrong.
>
> I have tried to do everything according to the instructions. I have
> enabled the database for cache notification by running the aspnet_regsql
> tool on the command line like this:
> aspnet_regsql -S server -E -d database -et
>
> Then I have run the aspnet_regsql tool to enable each table in the
> database for cache notification:
> aspnet_regsql -S server -E -d database -et -t tablename
>
> I have added the necessary parts into web.config file, so that it is like
> this:
>
> <connectionStrings>
> <add name="ConnectionString1" connectionString="Data
> Source=servername;Database=databasename;Integrated Security=True"
> providerName="System.Data.SqlClient"/>
> </connectionStrings>
> <system.web>
> <caching>
> <sqlCacheDependency enabled="true" pollTime="2000">
> <databases>
> <add connectionStringName="ConnectionString1"
> name="KJ"/>
> </databases>
> </sqlCacheDependency>
> </caching>
>
> I have added this into global.asax file for the application start event:
>
> System.Data.SqlClient.SqlDependency.Start(ConfigurationManager.ConnectionStrings("ConnectionString1").ToString())
>
> To test caching I wrote this piece of code where I get data from the table
> MAAKUNNAT in the
> database.
> ----------
> SqlCacheDependencyAdmin.EnableTableForNotifications(ConfigurationManager.ConnectionStrings("ConnectionString1").ToString(),
> "MAAKUNNAT")
> Dim maakunnatDS As New DataSet
>
> If Cache.Get("maakunnat") Is Nothing Then
> Dim myConnection As New
> SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString1").ToString())
> myConnection.Open()
>
> Dim cmd As New SqlCommand("haemaakunnat", myConnection)
> cmd.CommandType = CommandType.StoredProcedure
> Dim riippuvuus As New SqlCacheDependency("KJ", "MAAKUNNAT")
> Dim aggDep As New AggregateCacheDependency
> aggDep.Add(riippuvuus)
>
> Dim maakunnatDA As SqlDataAdapter = New SqlDataAdapter
> maakunnatDA.SelectCommand = cmd
>
> maakunnatDA.Fill(maakunnatDS, "MAAKUNTA")
> myConnection.Close()
> Cache.Insert("maakunnat", maakunnatDS, aggDep)
>
> Else
> Response.Write("The data is in the cache")
> maakunnatDS = Cache.Get("maakunnat")
> End If
> -----------------
> But when I run the page I get this error.
> ------------------------------------------
>
> The 'MAAKUNNAT' table in the database 'KJ' is not enabled for SQL cache
> notification.
>
> Please make sure the table exists, and the table name used for cache
> dependency matches exactly the table name used in cache notification
> registration.
>
> To enable a table for SQL cache notification, please use
> SqlCacheDependencyAdmin.EnableTableForNotifications method, or the command
> line tool aspnet_regsql. To use the tool, please run
> 'aspnet_regsql.exe -?'
> for more information.
>
> To get a list of enabled tables in the database, please use
> SqlCacheDependencyManager.GetTablesEnabledForNotifications method, or the
> command line tool aspnet_regsql.exe.
> ----------------------------------------------
> When I run the aspnet_regsql tool with the -lt parameter to get a list of
> enabled tables in the database they are all enabled. I have searched many
> pages in the internet and I cannot find out what I'm still doing wrong.
> I'd appreciate it very much if someone could help me with this problem.
>
> Toni S.
>